2013-02-11 110 views
1

在Javascript中,我有一種輸入數據的情況,我將其輸入到一個數組中。問題是,如果一個空格前面有一個反斜槓,我不希望在那裏發生分割。JavaScript中的輸入反向反斜槓:負反向

E.g. is_multiply___spaced_text - >['is','multiply','','','spaced','text']

但是:is\_multiply\___spaced_text - >['is multiply ','','spaced','text']

(下劃線用於爲清楚起見空格)

如果不是使用Javascript(不支持regex'es lookbehinds),我我只是用/(?<!\\)[ \n\t]/g。這不起作用,那麼處理這個問題的最好方法是什麼?

+0

你還想從輸出中替換反斜槓? – 2013-02-11 06:20:05

+0

你是指什麼意思?如果這就是你的意思,那麼在其他字符之前的反斜槓應該保留在輸出數組中。順便說一句,感謝編輯確實:) – tomsmeding 2013-02-11 09:12:23

回答

1

你可以扭轉字符串,然後使用負先行,然後反向字符串數組中:

var pre_results = "is\\ multiply\\ spaced text".split('').reverse().join('').split(/[ \t](?!\\)/); 
var results = []; 
for(var i = 0; i < pre_results.length; i++) { 
    results.push(pre_results[i].split('').reverse().join('')); 
} 
for(var i = 0; i < results.length; i++) { 
    document.write(results[i] + "<br>"); 
} 

在這個例子中,結果應該是:

['text', 'spaced', '', 'is\\ multiply\\'] 
+0

不錯的解決方案!只有你需要在輸出中過濾掉反斜槓,並在輸出之前添加一個額外的'results.reverse();'(你可以通過'console.log()':P)來獲得所需的'['multiply' , '', '間隔開的', '文本']'。結果:'var s,r,i; s =「是\\ multiply \\ spac \\ ed text」; r = s.split(「」)。reverse()。join(「」)。split(/ \ n \噸] /克)(\\?!);對於(i = 0; I tomsmeding 2013-02-11 14:53:10

0
"is\_multiply\___spaced_text".replace(/\_/, " ").replace(/_/, " ").split("_"); 
+0

我在我的問題中使用下劃線來表示空格,因爲SO不接受多個空格。這些下劃線應該是空格,我不能確定輸入不會包含任何其他下劃線! – tomsmeding 2013-02-11 09:10:41