我想检查我的字符串是否包含+字符。我尝试使用以下代码
s= "ddjdjdj+kfkfkf";
if(s.contains ("\\+"){
String parts[] = s.split("\\+);
s= parts[0]; // i want to strip part after +
}
但它没有给出预期的结果。任何想法?
答案 0 :(得分:77)
你需要这个:
if(s.contains("+"))
contains()
类的 String
方法不会将正则表达式作为参数,而是采用普通文本。
修改强>
String s = "ddjdjdj+kfkfkf";
if(s.contains("+"))
{
String parts[] = s.split("\\+");
System.out.print(parts[0]);
}
<强>输出:强>
ddjdjdj
答案 1 :(得分:11)
为什么不呢:
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
(内置版本或番石榴),你不需要先检查它是否包含+
- 如果它没有&# 39;无论如何,只有一个结果。显然,这是一个效率问题,但它的代码更简单:
// Calling split unconditionally
String[] parts = s.split("\\+");
s = parts[0];
请注意,写String[] parts
比String parts[]
更受欢迎 - 它是更惯用的Java代码。
答案 2 :(得分: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);