3

假设我有一个字符串,例如:

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

其中X可以是几个字符之一,例如 a .?!

如何删除该字符之后的所有内容?如果它只能是一种字符,我会使用indexOfand substr,但在这种情况下,我似乎需要一种不同的方法来找到位置。也许是一个正则表达式?

澄清:我不知道字符 X 是什么。我想在第一次出现任何指定字符时切断字符串。

好的,进一步澄清:

我实际上在做的是从网站上删除帖子。我从每个帖子中提取第一部分并将它们缝合在一起。“位”是指第一个标点符号之前的字符。我需要在那个标点符号之后切断所有内容。那有意义吗?

4

4 回答 4

7

只需将[and]中的所有内容替换为分隔符即可。必要时逃跑。

var str = "Good morning! Would you care for some tea?";
var beginning = str.split(/[.?!]/)[0];
// "Good morning"
于 2013-09-27T04:27:47.967 回答
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/

为您的要求字符串尝试这种方式。

两者都将返回早安

于 2013-09-27T04:27:41.773 回答
0

以下代码将按您的预期执行:

 var s = "Good morningX Would you care for some tea?";
  s = s.substring(X, n != -1 ? n : s.length);
  document.write(s);
于 2013-09-27T04:24:09.000 回答
-1

http://jsfiddle.net/JEFnY/

正则表达式将是

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

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

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

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

于 2013-09-27T04:28:54.047 回答