2013-04-05 57 views
0

如果文字以字符开头,我想测试每个单词#如果是,我会将这个单词放入变量'响应'中,如果不是,我会继续搜索。 我试过类似的东西:从文字开始以某个字符开始划分文字

var found = false; 
for (i = 0; i < text.length; i++) { 
    if (found = /^#...$/.test(text[i])) { 
     found = true; 
    } 
    if (found== true){ 
      //other stuff 
    } 
} 

你能帮我这个吗?

+0

'每个word'定义你所说的 “字” 的意思。非空间序列?英文字母顺序(并忽略其余的语言)? – nhahtdh 2013-04-05 16:41:52

+0

像您提到的那样,在英文字母表中使用一个非空格序列。 – Edeph 2013-04-05 16:54:47

+0

非空格序列可以包含数字,标点符号,来自所有语言的字符等。英文字母序列将**从英语以外的语言(列表未用尽)中排除**数字,标点和字符。 – nhahtdh 2013-04-05 16:56:44

回答

1

您可以在空间上使用拆分,然后使用子字符串查找第一个字母。然后比较它。

Demo

var arr= text.split(' '); 

for (i = 0; i < arr.length; i++) { 
    if (arr[i].substring(0,1) == '#') { 
     console.log('found!: ' + arr[i]); 
     break; 
    } 
} 
+0

Arr将只包含第一个单词?你能向我解释一下吗? – Edeph 2013-04-05 16:49:38

+0

Arr将是一个数组 - 包含字符串中的每个单词。 for循环迭代数组。子字符串(0,1)返回当前单词的第一个字母。然后将其与'#'进行比较。如果这是真的,它会进入if子句。 – 2013-04-05 16:53:37

0

你可能想是这样的:

var found = false, response; 
for (i = 0; i < text.length; i++) { 
    if (/^#.*$/.test(text[i])) { 
     found = true; 
     response = text[i]; 
     break; 
    } 
} 

相匹配的有#开始一切。如果您只想匹配非空格字符,请使用RegEx /^#(\S)*$/

+0

我想休息一下;在这种情况下没有意义,因为我希望所有以#开头的单词都能被一一处理。 – Edeph 2013-04-05 16:52:38

相关问题