2014-11-07 42 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); 
相关问题