我有一个字符串,它有时会包含连字符( - ),有时不会。当字符串包含连字符时,我想删除或隐藏连字符及其后面的任何文本。如何使用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