Javascript 删除多个字符中第一个实例之后的所有内容

Javascript 删除多个字符中第一个实例之后的所有内容,javascript,string,Javascript,String,假设我有一个字符串,如: var str=“早上好,要不要来点茶?” 其中X可以是几个字符中的一个,如、?或 如何删除该角色之后的所有内容? 如果它只能是一种类型的字符,我会使用indexOf和substr,但在这种情况下,我似乎需要另一种方法来查找位置。也许是正则表达式 澄清:我不知道X是什么字符。我想在任何一个指定字符第一次出现时切断字符串 好的,进一步澄清: 我实际上是在清理网站上的帖子。我从每篇文章中取第一点,把它们缝合在一起。我所说的“位”是指第一段标点符号之前的字符。在那个标点符号之

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

var str=“早上好,要不要来点茶?”

其中
X
可以是几个字符中的一个,如

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

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

好的,进一步澄清:


我实际上是在清理网站上的帖子。我从每篇文章中取第一点,把它们缝合在一起。我所说的“位”是指第一段标点符号之前的字符。在那个标点符号之后,我需要把所有的东西都剪掉。这有意义吗?

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

 var s = "Good morningX Would you care for some tea?";
  s = s.substring(X, n != -1 ? n : s.length);
  document.write(s);

试试这个,如果X有这个“,”字符,那么试试下面的

var s = 'Good morning, would you care for some tea?';
s = s.substring(0, s.indexOf(','));
document.write(s);
演示:

如果X有“!”,然后试试下面

var s = 'Good morning! would you care for some tea?';
s = s.substring(0, s.indexOf('!'));
document.write(s);
演示:

对您的需求字符串尝试这种方法


两者都将返回早安

只要用分隔符替换
[
]
中的所有内容即可。必要时逃走

var str = "Good morning! Would you care for some tea?";
var beginning = str.split(/[.?!]/)[0];
// "Good morning"

正则表达式将是

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

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

第二个捕获组只查找您指定的字符-在本例中是
,全部转义


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

是否要查找
split()
X是否表示“任何非字母或数字的字符”?这似乎会查看每个指定字符的整个字符串,并且只有在未找到前一个字符时才移动到下一个字符。是这样吗?是的。它查看整个字符串,并匹配任何可能性。
[0]
部分仅返回第一个匹配项。如果没有它,你会有一个数组,看起来像是
[“早上好”,“你想喝点茶吗?”]
。有没有一种方法可以同时检查每个字符,例如,如果逗号前有一个问号,它会在问号处剪切?那么,你的意思是,只有在逗号前有一个问号时?你需要使用前瞻来实现这一点。所以,如果你想在“?,”或“!,”或“,”上切换,你可以使用像
/[.?!](?=,)/
这样的正则表达式。如果这不是您要找的,我可能需要再看一个示例。@kalley如果您想使用单个分隔符进行拆分,它会出错。它将基于all/[.?!]/`进行拆分。没错,但我需要同时检查所有分隔符。在您的方法中,即使感叹号在字符串中位于第一位,它也会在逗号处被截断。您可以在其中添加更多特殊字符。