如何在java中拆分字符串

时间:2017-03-03 09:27:39

标签: java string

我有两种类型的字符串。一个是"abcdEfgh""abcd efgh"。这意味着第一个String中间有大写字母,第二个字符串有空格。那么现在我如何检查java中的这两个模式字符串并生成两个字符串。

String givenString;

if (givenString.equals("abcdEfgh")) {
   String str1 = abcd;
   String str2 = Efgh;
} else (givenString.equals("abcd efgh") {
   String str1 = abcd;
   String str2 = efgh;
}

请提供解决方案 感谢

3 个答案:

答案 0 :(得分:5)

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

进行拆分
  1. \\s是处理空白的情况。
  2. (?=[A-Z])是积极向前看的。它找到大写字母但在分割时保留分隔符。
  3. 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
    

答案 1 :(得分:2)

您需要使用OR运算符|组合这两个条件。你已经发现按空间划分只是" &#34 ;.大写示例由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]

答案 2 :(得分:0)

保持简单,在 givenString 中搜索空格而不是区分大小写的匹配

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