Reputation: 2104
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.
Upvotes: 0
Views: 1077
Reputation: 659
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.
Upvotes: 1
Reputation: 1530
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);
}
Upvotes: 0
Reputation: 3782
Try
\{\{\^.*\^\}\}
Useful tool for this: http://www.gskinner.com/RegExr/
Upvotes: 0