Как извлечь данные такого рода и поместить их в хороший массив? - PullRequest
1 голос
/ 18 января 2012

Я получил такую ​​строку:

var tweet ="@fadil good:))RT @finnyajja: what a nice day RT @fadielfirsta: how are you? @finnyajja yay";

Какой код должен работать для извлечения любых слов с символом @, а также для удаления какого-либо специального символа в конце слов? так что это будет массив, как это:

(@fadil, @finnyajja, @fadielfirsta, @finnyajja);

я пробовал следующий код:

var users = $.grep(tweet.split(" "), function(a){return /^@/.test(a)});

возвращает:

(@fadil, @finnyajja:, @fadielfirsta:, @finnyajja)

есть еще двоеточие ':' символ в конце некоторых слов. Что я должен делать? Любое решение, ребята? Спасибо

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Вот код, который проще, чем пытаться использовать split:

var tweet_text ="@fadil good:))RT @finnyajja: what a nice day RT @fadielfirsta: how are you? @finnyajja yay";

var result = tweet_text.match(/@\w+/g);
2 голосов
/ 18 января 2012

Самый простой способ без чрезмерного изменения текущего кода - просто удалить все двоеточия перед вызовом split:

var users = $.grep(tweet_text.replace(":","").split(" "), function(a){return /^@/.test(a)});

Вы также можете написать регулярное выражение, чтобы сделать всю работу за вас, используя match. Как то так:

var regex = /@[a-z0-9]+/gi;
var matches = tweet.match(regex);

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

http://jsfiddle.net/YHM87/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...