我尝试将字符串转换为更好的阅读字符串。喜欢" SaintPierreandMiquelon"进入" SaintPiere和Miquelon"或者"圣文森特和格林纳丁斯"成 "圣文森特和格林纳丁斯"
我的方法是:
public static String whitespace(String str) {
String string = str;
if (string.contains("and")) {
String[] parts = string.split("and");
String part1 = parts[0];
String part2 = parts[1];
String partres = part1 + " and " + part2;
if (partres.contains("the")) {
String[] partl = string.split("the");
String partl1 = partl[0];
String partl2 = partl[1];
String parterg = partl1 + " the " + partl2;
return parterg;
} else {
return partres;
}
} else {
return string;
} }
这显然很糟糕。输出也是错误的。它适用于"和"但是,如果有一个""在字符串中它也适用于""。
输出是针对这个字符串:" SerbiaandEuropetheAmerica" - > " SerbiaandEurope the America"
答案 0 :(得分:1)
在第二个想法中,如果遵循以下情况,则有正则表达式解决方案:
1)每个国家/地区名称的每个字都是Initcap
2)当你的字符串附近有两个国家时,它们被“,”(你在评论中提到)或“和”分开,所以没有像“HollandFrance”或“HollandtheAmerica”这样的字符串:< / p>
String str = "Serbia,FinlandandHolland,theAmerica";
System.out.println(str.replaceAll("([A-Z]|and|the)(?!and|,|$)", " $1").trim());
它仍然是一个临时解决方案,因此请仔细检查结果。
答案 1 :(得分:0)
你可以试试这个:
String str = "SerbiaandEuropetheAmerica";
str = str.replaceAll("the", " the ");
str = str.replaceAll("and", " and ");
System.out.println("str = " + str);
结果是:
str = Serbia and Europe the America
答案 2 :(得分:0)
我认为您的问题与您的第二条件&#34; 如果&#34; 分组在 partres 变量的字符串 而不是。
答案 3 :(得分:-1)
我建议使用替换,如下所示:
string.replace("the", " the ");
string.replace("and", " and ");
string.replace(" ", " ");