我有两种类型的字符串。一个是"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;
}
请提供解决方案 感谢
答案 0 :(得分:5)
您可以使用正则表达式\\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
答案 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");
}