【问题标题】:how to check if string contains '+' character [duplicate]如何检查字符串是否包含“+”字符[重复]
【发布时间】:2012-04-21 02:15:08
【问题描述】:

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

s= "ddjdjdj+kfkfkf";

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

}

但它没有给出预期的结果。有什么想法吗?

【问题讨论】:

  • 请阅读tinyurl.com/so-hints - 如果不说出您的预期和实际得到的结果,就说它没有给出预期的结果是没有用的。

标签: java string match


【解决方案1】:

你需要这个:

if(s.contains("+"))

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


编辑:

String s = "ddjdjdj+kfkfkf";

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

输出:

ddjdjdj

【讨论】:

  • 这并没有得到加号之前的部分,这听起来像是 OP 真正想要的。
  • 当我发表评论时,您的回答包含对String.contains的调用。
  • (刚刚再次查看了这个问题,我错过了他已经在调用 contains 的事实。现在还为时过早。Doh。但是指出其余的代码已经可以了有用...)
【解决方案2】:

为什么不只是:

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 代码。

【讨论】:

  • 惊人的解决方案。非常感谢!
【解决方案3】:

[+]比较简单

    String s = "ddjdjdj+kfkfkf";

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

【讨论】:

    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2011-03-29
    • 2019-06-06
    相关资源
    最近更新 更多