2013-04-05 56 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