Как извлечь отдельные части URL и заменить их на другие данные - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть определенный тип URL, и мне нужно определить некоторые его части и заменить на некоторые данные, URL будет www.something.com@param1={{^User Name^}},param2={{^user id^}}, ....

Что мне нужно сделать, это определить {{^User Name^}} и {{^user id^}} и заменить на мои значения,

У кого-нибудь есть идея сделать это с помощью flex?

Мой друг сказал мне использовать RegExp для этого, но я не знаю, как его использовать.

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

Что-то вроде этого может работать, никакой эксперт по 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');

Если вы хотите заменить только строку внутри {{}} maby, это будет работать:

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');

Чтобы удалить несколько {{}} для экзамена www.something.com@param1= можешь карлику ^ имя пользователя ^}}, {{^, e, ^}}, param2 = {{^ user id ^}} между попытками paramXthis:

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');

Выходные данные должны быть www.something.com@param1 = {{username}}, param2 = {{user_id}}.

Другой пример:

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');

Выходные данные должны быть www.something.com @ param1 = username, param2 = user_id.

0 голосов
/ 09 сентября 2011

Попробуйте

\{\{\^.*\^\}\}

Полезный инструмент для этого: http://www.gskinner.com/RegExr/

0 голосов
/ 09 сентября 2011

Возможно, не самое эффективное или приятное решение, но оно выполнит работу.Просто обновите функцию replace () для управления различными типами параметров.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...