2012-04-08 38 views
27

我要检查,如果我的字符串中包含+ character.I尝试下面的代码如何检查字符串中包含字符“+”

s= "ddjdjdj+kfkfkf"; 

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

} 

但亘古不变的预期给予主意result.Any?

+2

请仔细阅读http://tinyurl.com/so-hints - 这是没用的,说这不会给预期的结果不说你期待什么,你竟得到。 – 2012-04-08 06:21:40

回答

61

你需要这个来代替:

方法 String
if(s.contains("+")) 

contains()类没有采取正则表达式作为一个参数,它需要正常的文本。


编辑:

String s = "ddjdjdj+kfkfkf"; 

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

OUTPUT:

ddjdjdj 
+0

虽然没有得到加分之前的部分,这听起来像OP真正想要的。 – 2012-04-08 06:21:00

+0

当我发表我的评论时,你的答案*只包含对'String.contains'的调用。 – 2012-04-08 06:38:54

+0

(刚刚看过这个问题,我错过了他已经在调用contains的事实,现在还为时过早,但是指出其余的代码已经可以用了......) – 2012-04-08 06:46:25

9

为什么不干脆:

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(无论是内置的版本或番石榴),你不需要首先检查它是否包含+ - 如果没有,那么只会有一个结果。显然,有效率的问题,但它是简单的代码:

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

注意书写String[] parts优于String parts[] - 它更地道的Java代码。

+0

惊人的解决方案。非常感谢! – 2017-12-20 21:21:17

0

[+]简单

String s = "ddjdjdj+kfkfkf"; 

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