2014-11-07 48 views
2

我有一個字符串,它有時會包含連字符( - ),有時不會。當字符串包含連字符時,我想刪除或隱藏連字符及其後面的任何文本。如何使用javascript或jquery隱藏某個字符後的字符串結尾

例如,'john'會呈現'john'。而且'約翰跳上燭臺'也會變成'約翰'。

+0

哇,好幾個答案都馬上進來了。不知道如何選擇最好的,但我會在這裏選擇一分鐘。我也意識到我需要用jQuery來遍歷元素,然後通過jquery的text()方法在每個元素上運行這個例程。 – 2014-11-07 03:31:44

+0

OK,許多問題的答案可能已經工作了,我又可以在我的jQuery的正則表達式,如下:'$( 「span.first名」)每個(函數(){\t \t \t \t $(這個).text($(this).text()。replace(/-.*$/,'')); });' – 2014-11-07 03:44:04

+2

我喜歡這些類型的問題,問題不一定很難解決,但你會得到很多有趣的不同方法來完成同樣的事情。 (好吧,無論如何,這些答案都是正確的。) – 2014-11-07 03:57:05

回答

3

您可以使用一個簡單的正則表達式替換

myString.replace(/-.*$/, '') 

例如

var myString = 'john'; 
 

 
alert('"' + myString + '" becomes "' + myString.replace(/-.*$/, '') + '"'); 
 

 
myString = 'john-hops-over-the-candlestick'; 
 

 
alert('"' + myString + '" becomes "' + myString.replace(/-.*$/, '') + '"'); 
 
                

+0

對於任何字符都不起作用,但你可以執行'function breakAt(str,at){return str.replace(new RegExp(at +'。* $ '),'');}'。請注意,在創建RegExp時,您必須使用新的RegExp()來對字符串進行串聯。 – PHPglue 2014-11-07 03:41:50

+1

@PHPglue是真的,但問題肯定不會要求*「任何字符」* – Phil 2014-11-07 03:45:00

2

試試這個:

function breakAt(str, at){ 
    return str.split(at)[0]; 
} 
console.log(breakAt('john-hops-over-the-candlestick', '-')); 
console.log(breakAt('john-hops-over-the-candlestick', 'john')); 
+1

這將返回'燭臺上跳',而不是'約翰'。 – 2014-11-07 03:12:39

+0

對不起。我認爲它是固定的。 – PHPglue 2014-11-07 03:14:12

2

以下truncateAt函數應該做你想做的。

var string1 = 'john'; 
 
var string2 = 'john-hops-over-the-candlestick'; 
 
var string3 = 'john hops over the candlestick'; 
 

 
function truncateAt(str, char) { 
 
    var idx = str.indexOf(char); 
 
    return idx === -1 ? str : str.substr(0, idx); 
 
} 
 

 
console.log(truncateAt(string1, '-')); 
 
console.log(truncateAt(string2, '-')); 
 
console.log(truncateAt(string3, '-'));

+0

很酷,感謝您的檢查。但是你的方法更聰明,更簡潔。 – 2014-11-07 03:52:38

+0

我刪除了我的評論,因爲性能基準在隨後的運行中不斷變化,但在這裏它又是反正:) http://jsperf.com/regex-vs-substr-with-indexof – Phil 2014-11-07 03:56:16

+1

只是出於好奇,我暫時添加了一個測試case'for split(' - ')[0]'並且用它運行了幾次。 「分裂」吞吐量總是和其他兩種方法一樣。 – 2014-11-07 04:09:11

1
you can use split(); 
var str = 'john-sample';   
var substr = str.split('-'); 
fname = substr[0]; 
alert(fname); 
相關問題