我有一個字符串,它有時會包含連字符( - ),有時不會。當字符串包含連字符時,我想刪除或隱藏連字符及其後面的任何文本。如何使用javascript或jquery隱藏某個字符後的字符串結尾
例如,'john'會呈現'john'。而且'約翰跳上燭臺'也會變成'約翰'。
我有一個字符串,它有時會包含連字符( - ),有時不會。當字符串包含連字符時,我想刪除或隱藏連字符及其後面的任何文本。如何使用javascript或jquery隱藏某個字符後的字符串結尾
例如,'john'會呈現'john'。而且'約翰跳上燭臺'也會變成'約翰'。
您可以使用一個簡單的正則表達式替換
myString.replace(/-.*$/, '')
例如
var myString = 'john';
alert('"' + myString + '" becomes "' + myString.replace(/-.*$/, '') + '"');
myString = 'john-hops-over-the-candlestick';
alert('"' + myString + '" becomes "' + myString.replace(/-.*$/, '') + '"');
試試這個:
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'));
這將返回'燭臺上跳',而不是'約翰'。 – 2014-11-07 03:12:39
對不起。我認爲它是固定的。 – PHPglue 2014-11-07 03:14:12
以下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, '-'));
很酷,感謝您的檢查。但是你的方法更聰明,更簡潔。 – 2014-11-07 03:52:38
我刪除了我的評論,因爲性能基準在隨後的運行中不斷變化,但在這裏它又是反正:) http://jsperf.com/regex-vs-substr-with-indexof – Phil 2014-11-07 03:56:16
只是出於好奇,我暫時添加了一個測試case'for split(' - ')[0]'並且用它運行了幾次。 「分裂」吞吐量總是和其他兩種方法一樣。 – 2014-11-07 04:09:11
you can use split();
var str = 'john-sample';
var substr = str.split('-');
fname = substr[0];
alert(fname);
哇,好幾個答案都馬上進來了。不知道如何選擇最好的,但我會在這裏選擇一分鐘。我也意識到我需要用jQuery來遍歷元素,然後通過jquery的text()方法在每個元素上運行這個例程。 – 2014-11-07 03:31:44
OK,許多問題的答案可能已經工作了,我又可以在我的jQuery的正則表達式,如下:'$( 「span.first名」)每個(函數(){\t \t \t \t $(這個).text($(this).text()。replace(/-.*$/,'')); });' – 2014-11-07 03:44:04
我喜歡這些類型的問題,問題不一定很難解決,但你會得到很多有趣的不同方法來完成同樣的事情。 (好吧,無論如何,這些答案都是正確的。) – 2014-11-07 03:57:05