I have a specific type url and i need to identify some parts of it and replace with some data, url would be 开发者_运维技巧www.something.com@param1={{^User Name^}},param2={{^user id^}}
,....
What i need to do is, identify {{^User Name^}}
and {{^user id^}}
and replace with my values,
Anybody have an idea to do this with flex?
A friend of mine told me to use RegExp for this, but I'm clueless about how to use it.
Something like this might work, no expert on RegExp tho.
var s:String = "www.something.com@param1={{^User Name^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1=)({{\^)([A-Za-z0-9 ])*(\^}})/;
var userIdPattern:RegExp = /(?<=param2=)({{\^)([A-Za-z0-9 ])*(\^}})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
If you want to replace only the string inside {{}} maby this would work:
var s:String = "www.something.com@param1={{^User Name^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1={{)\^([A-Za-z0-9 ])*\^(?=}})/;
var userIdPattern:RegExp = /(?<=param2={{)\^([A-Za-z0-9 ])*\^(?=}})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
To remove multiple {{}} for exampe www.something.com@param1={{^User Name^}},{{^,e,^}},param2={{^user id^}} between paramX try this:
var s:String = "www.something.com@param1={{^User Name^}},{{^,e,^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1={{)\^([A-Za-z0-9\^}}{{, ])*(?=}})/;
var userIdPattern:RegExp = /(?<=param2={{)\^([A-Za-z0-9\^}}{{, ])*(?=}})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
Output should be www.something.com@param1={{username}},param2={{user_id}}.
Another example:
var s:String = "www.something.com@param1={{^User Name^}},{{^,e,^}},param2={{^user id^}}";
var userPattern:RegExp = /(?<=param1=)({{\^)([A-Za-z0-9\^}}{{, ])*(})/;
var userIdPattern:RegExp = /(?<=param2=)({{\^)([A-Za-z0-9\^}}{{, ])*(})/;
s = s.replace(userPattern,'username');
s = s.replace(userIdPattern,'user_id');
Output should be www.something.com@param1=username,param2=user_id.
Try
\{\{\^.*\^\}\}
Useful tool for this: http://www.gskinner.com/RegExr/
Maybe not the most efficient or nice solution but it will get the work done. Simply update the replace() function to manage different types of parameters.
public static const START_TAG:String = "{{^";
public static const END_TAG:String = "^}}";
public function replace():void {
var url:String = "param1={{^User Name^}},param2={{^user id^}}";
while ( getTagStartIndex(url) >= 0 ) {
var currentTag:String = getTagContent(url);
var value:String = "";
if ( currentTag == "User Name" ) {
value = "myName";
} else if ( currentTag == "user id" ) {
value = "myID";
} else {
value = "undefinedtag";
}
url = replaceTagWithValue(currentTag,value, url);
}
}
protected function getTagStartIndex(str:String):int {
return str.indexOf(START_TAG);
}
protected function getTagEndIndex(str:String):int {
return str.indexOf(END_TAG, getTagStartIndex(str+1));
}
protected function getTagContent(str:String):String {
return str.substring(getTagStartIndex(str)+START_TAG.length, getTagEndIndex(str));
}
protected function replaceTagWithValue(tag:String, tagValue:String, str:String):String {
return str.replace(START_TAG+tag+END_TAG,tagValue);
}
精彩评论