我想检查我的字符串是否包含一个+字符。我尝试了以下代码
s= "ddjdjdj+kfkfkf";
if(s.contains ("\\+"){
String parts[] = s.split("\\+);
s= parts[0]; // i want to strip part after +
}
但它没有给出预期的结果。有什么想法吗?
我想检查我的字符串是否包含一个+字符。我尝试了以下代码
s= "ddjdjdj+kfkfkf";
if(s.contains ("\\+"){
String parts[] = s.split("\\+);
s= parts[0]; // i want to strip part after +
}
但它没有给出预期的结果。有什么想法吗?
if(s.contains("+"))
String
类的contains()
方法不接受正则表达式作为参数,它接受普通文本。
编辑:
String s = "ddjdjdj+kfkfkf";
if(s.contains("+"))
{
String parts[] = s.split("\\+");
System.out.print(parts[0]);
}
输出:
ddjdjdj
String.contains
的调用。 - Jon Skeet为什么不直接使用以下代码:
int plusIndex = s.indexOf("+");
if (plusIndex != -1) {
String before = s.substring(0, plusIndex);
// Use before
}
目前还不清楚您原来的版本为什么不起作用,因为您并没有说明实际发生了什么。如果您想要在不使用正则表达式的情况下将 not 进行拆分,我个人会使用 Guava:
Iterable<String> bits = Splitter.on('+').split(s);
String firstPart = Iterables.getFirst(bits, "");
如果您要使用 split(无论是内置版本还是 Guava 版本),则不需要先检查它是否包含 +,如果没有,结果只会有一个。显然,存在效率问题,但代码更简单:split
(无论是内置版本还是 Guava 版本),则不需要先检查它是否包含+
,如果没有,结果只会有一个。显然,存在效率问题,但代码更简单:// Calling split unconditionally
String[] parts = s.split("\\+");
s = parts[0];
请注意,编写String[] parts
优于String parts[]
——这是更符合Java惯例的代码。[+]更加简单
String s = "ddjdjdj+kfkfkf";
if(s.contains ("+"))
{
String parts[] = s.split("[+]");
s = parts[0]; // i want to strip part after +
}
System.out.println(s);