在几个字符之一的第一个实例之后删除所有内容

时间:2013-09-27 04:17:07

标签: javascript string

说我有一个字符串:

var str = "Good morningX Would you care for some tea?"

X可以是多个字符之一,例如.?!

如何删除该角色后的所有内容? 如果它只能是一种类型的角色,我会使用indexOfsubstr,但看起来我需要一种不同的方法来找到这种情况下的位置。也许是一个正则表达式?

澄清:我不知道X是什么角色。我想在第一次出现任何一个指定字符时剪掉字符串。

好的,进一步澄清:

我实际上在做的是从网站上刷帖子。我从每个帖子中取出第一个位并将它们拼接在一起。 'bit',我指的是第一段标点符号之前的字符。我需要在标点符号后删除所有内容。这有意义吗?

4 个答案:

答案 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)

http://jsfiddle.net/JEFnY/

正则表达式将是

str.replace(/(.*?)([\.\?\!])(.*)/i, '$1$2');

第一个捕获组是一个惰性表达式,用于匹配下一个捕获组之前的所有内容。

第二个捕获组仅查找您指定的字符 - 在本例中为.!?,全部转义。

最后一个捕获组被丢弃。因此,替换字符串是$1$2,或者前两个捕获组在一起。