Найти все хеш-теги в тексте - PullRequest
0 голосов
/ 03 июня 2011

Мне нужно найти все хеш-теги в этом тексте, используя ActionScript 3 (AS3):

Lorem ipsum dolor #sit_amet, contetetur sadipscing, sed # diam-nonumy eirmod tempor #invidunt ut labore #et

Какой хороший способ сделать это?Спасибо Фрэнк

Ответы [ 3 ]

1 голос
/ 03 июня 2011
// your data:
var data:String = "Lorem ipsum dolor #sit_amet, consetetur sadipscing, sed #diam-nonumy eirmod tempor #invidunt ut labore #et";

// this regular expression will match most "normal" characters, add more as needed
// it will stop at the first whitespace or linebreak it hits
var regex:RegExp = /(\#[a-zA-Z0-9_%-]*)/g;

// this object will be used to store our results
var result:Object;

// now, we run the regex until it returns null, 
// that means there's nothing more that matches
while (result = regex.exec(data)) {
    // since we're not using groups or anything, all we want is the 0 in the object
    trace(result[0]);
}

Это будет трассировка:

#sit_amet
#diam-nonumy
#invidunt
#et
1 голос
/ 03 июня 2011

Подробнее об «найти», потому что я не уверен, что вы хотите с ними делать.

Тем не менее, это может удовлетворить ваши потребности:

var str:String = "Lorem ipsum dolor #sit_amet, consetetur sadipscing, sed #diam-nonumy eirmod tempor #invidunt ut labore #et";
var array:Array = str.split("#");

Ваш массив будетсодержит следующее - к которому вы можете снова добавить хеш, чтобы получить хештег:

0: Lorem ipsum dolor1: sit_amet, ведущий садист, седь2: Diam-Nonumy Eirmod Tempor3: invidunt ut labore4: et

Если это не совсем то, что вы делали, вам, возможно, придется взглянуть на регулярные выражения, которые выходят далеко за рамки моих знаний.

0 голосов
/ 03 июня 2011

RE: Есть ли умный способ удалить найденные теги из текста впоследствии?

Вы просто хотите удалить реальный хэш-тег или хэш-тег иего теговое слово?

это удалит только хеш-тег из строки:

myString.replace(new RegExp("#", "g"), ""));

, в то время как удалит хеш-тег и его теговое слово из строки:

myString.replace(new RegExp("#\\w*", "g"), "")

полное руководство и справочник по регулярным выражениям можно найти здесь: http://www.regular -expressions.info /

-

edit:

это немного сложно, так как вы хотите заменить части строки между хеш-тегами, в то время как вся строка по существу находится между хеш-тегами.следовательно, использование простого регулярного выражения lookaround не будет безошибочным без написания собственного синтаксического анализатора строк.

, но что-то подобное может сработать:

var stringData:String = "#Lorem # et #ipsum dolor #sit_amet, consetetur sadipscing, sed #diam et #word# #_hello_# #-word# #word# #1a# #2WORD2# #2012# #word-3# #word_3# #word 3#";

trace(stringData.replace(new RegExp("#(.*?)#", "g"), ""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...