1

我有像“ xxxxx?434334”,“ xxx?411112”,“ xxxxxxxxx?11113”等字符串。

如何substring正确检索“ xxxxx”(直到 ' ?' 字符出现的所有内容)?

4

4 回答 4

6
return s.substring(0, s.indexOf('?'));

不需要正则表达式。

如果您有问题,请使用正则表达式。现在你有两个问题。

于 2012-05-28T11:25:01.450 回答
4
str = str.replaceAll("[?].*", "");

换句话说,“删除问号字符之后的所有内容,包括问号字符”。必须用?方括号括起来,否则它具有特殊含义。

于 2012-05-28T11:22:56.737 回答
0

我同意其他人的回答,即您应该尽可能避免使用正则表达式,但如果您确实想在这种情况下使用它,您可以使用以下内容

Pattern regex = Pattern.compile("([^\\?]*)\\?{1}");
Matcher m = regex.matcher(str);
if (m.find()) {
    result = m.group(1);
}

其中 str 是您的输入字符串。

编辑:正则表达式的描述匹配任何不是“?”的字符组 并有一个“?” 团后

于 2012-05-28T13:25:27.090 回答
0

模式 ".*(?=\?)" 也应该可以工作。?= 是一个积极的前瞻,这意味着物质匹配引号之前的所有内容,但不匹配引号本身。

于 2012-05-28T16:31:26.717 回答