41

我想检查我的字符串是否包含 + 字符。我尝试了以下代码

s= "ddjdjdj+kfkfkf";

if(s.contains ("\\+"){
 String parts[] = s.split("\\+);
  s=  parts[0]; // i want to strip part after  +

}

但它没有给出预期的结果。知道吗?

4

3 回答 3

94

你需要这个:

if(s.contains("+"))

contains()类的方法String不接受正则表达式作为参数,它接受普通文本。


编辑:

String s = "ddjdjdj+kfkfkf";

if(s.contains("+"))
{
    String parts[] = s.split("\\+");
    System.out.print(parts[0]);
}

输出:

ddjdjdj
于 2012-04-08T06:17:26.920 回答
13

为什么不只是:

int plusIndex = s.indexOf("+");
if (plusIndex != -1) {
    String before = s.substring(0, plusIndex);
    // Use before
}

目前尚不清楚为什么您的原始版本不起作用,但是您没有说出实际发生的情况。如果您想使用正则表达式进行拆分,我个人会使用Guava

Iterable<String> bits = Splitter.on('+').split(s);
String firstPart = Iterables.getFirst(bits, "");

如果您要使用split(内置版本或 Guava),则无需检查它是否首先包含+- 如果不包含,则无论如何只会有一个结果。显然存在效率问题,但它是更简单的代码:

// Calling split unconditionally
String[] parts = s.split("\\+");
s = parts[0];

请注意,写作String[] parts是首选String parts[]——它是更惯用的 Java 代码。

于 2012-04-08T06:17:32.007 回答
1

[+]更简单

    String s = "ddjdjdj+kfkfkf";

    if(s.contains ("+"))
    {
        String parts[] = s.split("[+]");
        s =  parts[0]; // i want to strip part after  +
    }
    System.out.println(s);
于 2012-04-08T06:25:58.960 回答