我们说我有以下字符串:
x = 'Johnny_button'
y = 'Rebecca_button'
z = 'Alex_button'
我只想在' _button'之前说出这个词。 (又名)。如何使用javascript切掉最后一部分? .slice()方法似乎没有像我期望的那样工作:
x.slice(-1, -7)
# ""
y.slice(-1, -7)
# ""
答案 0 :(得分:3)
在0
函数中使用slice()
作为第一个参数。
var x = 'Johnny_button',
y = 'Rebecca_button',
z = 'Alex_button';
console.log(x.slice(0, -7));
console.log(y.slice(0, -7));
console.log(z.slice(0, -7));

答案 1 :(得分:2)
您可以将.replace()
与RegExp
/_.*$/
var res = str.replace(/_.*$/g, "")
或.indexOf()
与.slice()
var res = str.slice(0, str.indexOf("_"))
答案 2 :(得分:1)
使用0
代替-1
,它会起作用。您希望在索引0(输入的开头)开始选定的子字符串,而不是在最后一个字符之前。
答案 3 :(得分:0)
也许,你可以试试'分裂'的方法。它将返回如下数组:
var a = 'Johnny_button'.split('_');
var name = a[0];
console.log(name);
答案 4 :(得分:0)
您也可以使用匹配,但我认为guest271314的答案更好:
['Johnny_button','noUnderscore','_nothingBefore'].forEach(
function (s) {
console.log( s + ' => ' + (s.match(/^[^_]*/) || [])[0] );
});