开发者

How to extract specific parts of a URL and replace with different data

开发者 https://www.devze.com 2023-04-03 21:51 出处:网络
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^}},....

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);
}
0

精彩评论

暂无评论...
验证码 换一张
取 消