如何在java中分割字符串
我有两种类型的字符串。一个是"abcdEfgh"
和"abcd efgh"
。这意味着第一个字符串在大写字母之间,第二个字符串有空格。那么现在我该如何在java中检查这两个模式字符串并创建两个字符串。如何在java中分割字符串
String givenString;
if (givenString.equals("abcdEfgh")) {
String str1 = abcd;
String str2 = Efgh;
} else (givenString.equals("abcd efgh") {
String str1 = abcd;
String str2 = efgh;
}
请提供解决方案 感谢
您可以分割使用正则表达式\\s|(?=[A-Z])
-
\\s
是应对空白的情况。 -
(?=[A-Z])
是积极的向前看。它发现大写字母,但在分割时保持分隔符。
。
String givenString;
String split[] = givenString.split("\\s|(?=[A-Z])");
String str1 = split[0];
String str2 = split[1];
两种情况
测试案例1
//case 1
givenString = "abcdEfgh";
str1 = abcd
str2 = Efgh
测试案例2
//case 2
givenString = "abcd efgh";
str1 = abcd
str2 = efgh
@RamanSahasi谢谢你的回答。我在测试用例2中测试用例1 –
@RamanSahasi中,str1 = null和str2 = abcd,str1 = null&str2 = abcd –
@PratibhaPatil我编译并测试了这段代码。请看[我的测试用例的在线版本](http://www.tutorialspoint.com/compile_java_online.php?PID=0Bw_CjBb95KQMWGdEbkJERm12dUU)。 –
您需要使用OR运算符|
两个条件结合起来。你已经想通过空间拆分就是“”。大写实例由Java: Split string when an uppercase letter is found
例回答
String one = "abcdEfgh";
String two = "abcd efgh";
System.out.println(Arrays.toString(one.split(" |(?=\\p{Upper})")));
System.out.println(Arrays.toString(two.split(" |(?=\\p{Upper})")));
输出
[abcd, Efgh]
[abcd, efgh]
谢谢@亚当,大写和白色空间都是相同的模式? –
@PratibhaPatil是的,我的例子显示可以使用相同的模式 – Adam
保持简单,在givenString搜索空间,而不是区分大小写配衬
if(givenString.indexOf(" ") != -1){
System.out.println("The string has spaces");
}else{
System.out.println("The string has NO spaces");
}
字符串类有一个拆分方法。 'givenString.split(“”);'为白色空间示例。 –
而对于大写字母的示例,http://stackoverflow.com/questions/3752636/java-split-string-when-an-uppercase-letter-is-found – BackSlash
可能的重复[Java:分割字符串,当大写字母是发现](http://stackoverflow.com/questions/3752636/java-split-string-when-an-uppercase-letter-is-found) –