说我有一个字符串:
var str = "Good morningX Would you care for some tea?"
X
可以是多个字符之一,例如.
,?
或!
。
如何删除该角色后的所有内容?
如果它只能是一种类型的角色,我会使用indexOf
和substr
,但看起来我需要一种不同的方法来找到这种情况下的位置。也许是一个正则表达式?
澄清:我不知道X是什么角色。我想在第一次出现任何一个指定字符时剪掉字符串。
好的,进一步澄清:
我实际上在做的是从网站上刷帖子。我从每个帖子中取出第一个位并将它们拼接在一起。 'bit',我指的是第一段标点符号之前的字符。我需要在标点符号后删除所有内容。这有意义吗?
答案 0 :(得分:6)
只需用您的分隔符替换[
和]
中的所有内容。必要时逃脱。
var str = "Good morning! Would you care for some tea?";
var beginning = str.split(/[.?!]/)[0];
// "Good morning"
答案 1 :(得分:0)
以下代码将按预期执行:
var s = "Good morningX Would you care for some tea?";
s = s.substring(X, n != -1 ? n : s.length);
document.write(s);
答案 2 :(得分:0)
试试这个,如果X有这个','字符,请尝试下面的
var s = 'Good morning, would you care for some tea?';
s = s.substring(0, s.indexOf(','));
document.write(s);
演示:http://jsfiddle.net/L4hna/490/
如果X有'!' ,然后尝试下面
var s = 'Good morning! would you care for some tea?';
s = s.substring(0, s.indexOf('!'));
document.write(s);
演示:http://jsfiddle.net/L4hna/491/
请尝试这种方式来处理您的需求字符串。
两者都会回归早安
答案 3 :(得分:-1)
正则表达式将是
str.replace(/(.*?)([\.\?\!])(.*)/i, '$1$2');
第一个捕获组是一个惰性表达式,用于匹配下一个捕获组之前的所有内容。
第二个捕获组仅查找您指定的字符 - 在本例中为.!?
,全部转义。
最后一个捕获组被丢弃。因此,替换字符串是$1$2
,或者前两个捕获组在一起。