【问题标题】:how to extract this kind of data and put them into a nice array?如何提取这种数据并将它们放入一个不错的数组中?
【发布时间】:2012-01-18 19:50:27
【问题描述】:

我得到了这样一个字符串:

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)

在某些单词的末尾还有冒号“:”字符。我该怎么办?有什么解决方案吗?谢谢

【问题讨论】:

    标签: javascript regex arrays


    【解决方案1】:

    这是比尝试使用 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);
    

    【讨论】:

    • 哇。它完美地工作!谢谢你 :-)。这个正则表达式的东西对我来说很难。但你只是让它看起来很简单。
    • 如果您不介意,再问一个问题。我应该使用什么正则表达式来匹配字符串中以“http://”开头的任何单词。正如您所猜测的,我试图在字符串中查找任何 URL。谢谢:-)
    【解决方案2】:

    在不过多更改当前代码的情况下,最简单的方法是在调用 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/

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多