2017-03-03 112 views
5

我有两种类型的字符串。一个是"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; 
} 

请提供解决方案 感谢

+1

字符串类有一个拆分方法。 'givenString.split(“”);'为白色空间示例。 –

+3

而对于大写字母的示例,http://stackoverflow.com/questions/3752636/java-split-string-when-an-uppercase-letter-is-found – BackSlash

+2

可能的重复[Java:分割字符串,当大写字母是发现](http://stackoverflow.com/questions/3752636/java-split-string-when-an-uppercase-letter-is-found) –

回答

5

您可以分割使用正则表达式\\s|(?=[A-Z])

  1. \\s是应对空白的情况。
  2. (?=[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 
+0

@RamanSahasi谢谢你的回答。我在测试用例2中测试用例1 –

+0

@RamanSahasi中,str1 = null和str2 = abcd,str1 = null&str2 = abcd –

+0

@PratibhaPatil我编译并测试了这段代码。请看[我的测试用例的在线版本](http://www.tutorialspoint.com/compile_java_online.php?PID=0Bw_CjBb95KQMWGdEbkJERm12dUU)。 –

2

您需要使用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] 
+0

谢谢@亚当,大写和白色空间都是相同的模式? –

+0

@PratibhaPatil是的,我的例子显示可以使用相同的模式 – Adam

0

保持简单,在givenString搜索空间,而不是区分大小写配衬

if(givenString.indexOf(" ") != -1){ 
    System.out.println("The string has spaces"); 
}else{ 
    System.out.println("The string has NO spaces"); 
}