2017-03-03 177 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"); 
}