从纯文本中检索属性

时间:2012-03-13 23:56:14

标签: javascript arrays parsing tags textarea

让我们说我们有这个文本

  

85公斤的家伙咆哮了10英里然后我们可以看到他只是印刷和排版行业的虚拟文本,所有这些都在2小时内完成

我们希望捕获:

  1. 85公斤

  2. 10英里

  3. 2小时

  4. 我正在尝试一种可以检索som属性的函数(已知的属性,corse)

    让我们说要检测:

    属性:[金额] [mesure]

    我们的mesures是:

    [miles, seconds, hours, minutes, times, kilos]
    

    所以我想在空白空间中爆炸文本,检查数组(文件中)是否有单词,如果前一个单词是数字,那么我有一个属性:D

    (这是一种伪/ javascript代码)

    function get_mesure_attrs(txt){
         var text = txt.split(' ');
         for (i=1;i<=text.length;i++{    /*Note i begin with i=1 cause the first word would never be a mesure of a desired atribute */
             if(text[i] is in_array(mesures){
                if(is_number(text[i-1]){
                    console.log('Atribute: '+text[i-1]+' '+text[i]);
                }
         }
    }
    

    我对相关的联合阵列没有足够的熟悉,所以我想知道是否有人可以给我一个提示,

    非常感谢

2 个答案:

答案 0 :(得分:1)

我建议使用正则表达式:

function getMeasureAttrs(txt) {
  var re = /(\d+)\s+(miles|seconds|hours|minutes|times|kilos)/g;
  var match;
  while (match = re.exec(txt)) {
    console.log('Attribute: ' + match[1] + ' ' + match[2]);
  }
}

正则表达式中的两个括号内的部分是匹配的。第一个(\d+)表示整数,第二个是您指定的单位列表。

答案 1 :(得分:1)

var str= "The 85 kilos guy rant 10 miles and then we can se he is simply dummy text of the printing and typesetting industry and all of this in 2 hours 1 kilo",
measures = "mile|second|hour|minute|time|kilo";
function getMeasureAttrs(txt) {
  var re = RegExp( "\\b(\\d+)\\s(("+ measures +")s?)","g" );
  var attrs = [];
  txt.replace( re, function  ( $, $1, $2 ) {
    attrs.push ([ $1, $2 ] );
  })
  return attrs;
}
console.log(  getMeasureAttrs( str ) ); // [["85", "kilos"], ["10", "miles"], ["2", "hours"],["1","kilo"]]

提前申请