2016-03-11 91 views
2

使用JavaScript,如果另一個字符串以第一個字符串開頭,如何從其他字符串剝離字符串?從其他字符串剝離字符串(如果它使用JavaScript開頭)

var matcher='Hello'; 

var s1='hello everyone'; 
console.log(someFunction(s1,matcher); 
//Should return ' everyone', and should be case insensitive 

var s2='xhello everyone'; 
console.log(someFunction(s2,matcher); 
//Should return nothing (either NULL or FALSE or "" would be fine) since s2 doesn't start with 'Hello' 

演示了三個答案:https://jsfiddle.net/dynvgn1k/

+0

搜索第一個字符串,並用'nothing'替換( 「」)。 –

+0

@noob如何強制它從一開始就開始? – user1032531

+0

使用'^'。這從開始就被稱爲錨定。它會在字符串的開頭尋找你的匹配。 –

回答

2

沒有必要使用正則表達式只需使用:

s1.toLowerCase().indexOf(matcher.toLowerCase()) === 0 && s1.substr(matcher.length) 
//=> everyone 

matcher='hi' 
s1.toLowerCase().indexOf(matcher.toLowerCase()) === 0 && s1.substr(matcher.length) 
//=> false 

使用toLowerCase將使它忽略大小寫比較。 indexOf返回搜索字符串在主題和位置中的位置0表示搜索字在開始處找到。

+0

當然看起來很簡單!介意解釋它是如何工作的? – user1032531

+0

是的,我剛剛在回答中加入了它。 – anubhava

+0

啊,所以這隻會驗證字符串是否以另一個字符串開頭。我希望我將不得不找到第二個字符串的長度,並從第一個字符串返回很多字符? – user1032531

2

一個簡單的正則表達式會做

function someFunction(str,matcher) { 
    var regex = new RegExp('^' + matcher, 'i'); 
    return str.replace(regex, ''); 
} 
+0

請注意,如果字符串未以匹配的字符串開頭,則會返回原始數組。 – user1032531

0

你可以這樣做

var matcher='Hello'; 
var s1='hello everyone'; 
s=s1.split(" "); 
(s[0].toUpperCase() ===matcher.toUpperCase())?console.log(s[1]):console.log("nothing"); 
+0

雖然我展示了一個''「',我不想依賴它。 – user1032531

+0

好的,在這種情況下,這種解決方案不會工作。 –