我有一个字符串,有时会包含连字符 (-),有时不会。当字符串包含连字符时,我想要删除或隐藏连字符及其后的所有文本。
例如,'john' 将被呈现为 'john'。而 'john-hops-over-the-candlestick' 也将被呈现为 'john'。
例如,'john' 将被呈现为 'john'。而 'john-hops-over-the-candlestick' 也将被呈现为 '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.replace(new RegExp(at+'.*$'), '');}
。请注意,在创建 RegExp 时必须使用 new RegExp()
来执行字符串的连接。 - StackSlave试试这个:
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'));
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, '-'));
split('-')[0]
的测试用例,并且也运行了几次。与其他两种方法相比,split
的吞吐量始终在同一范围内。 - Troy Gizziyou can use split();
var str = 'john-sample';
var substr = str.split('-');
fname = substr[0];
alert(fname);
$( "span.first-name").each(function() { $(this).text($(this).text().replace(/-.*$/, '')); });
- Tony Brasunas