【发布时间】:2015-12-17 14:52:31
【问题描述】:
我尝试将字符串转换为更好阅读的字符串。像“圣皮埃尔和密克隆”变成“圣皮埃尔和密克隆”或“圣文森特和格林纳丁斯”变成 “圣文森特和格林纳丁斯”
我的做法是这样的:
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;
} }
这显然很糟糕。输出也是错误的。它适用于“and”,但如果字符串中也有“the”,它只适用于“the”。
输出是这个字符串:"SerbiaandEuropetheAmerica" --> "SerbiaandEurope the America"
【问题讨论】:
-
而
"ampersand"会被拆分成"ampers and"? -
为什么 'SaintVincentandtheGrenadines' 是 'Saint Vincent...' 而 'SaintPierreandMiquelon' 是 'SaintPiere...'?
-
@LuiggiMendoza 或者更好,
Holl and。 @bastel String 类有replaceAll方法,但恐怕你的方法不能按预期工作,你需要一本字典,即使那样也很困难。 -
@bastel 在这种情况下,像这样创建所有可能的国家/地区的地图要容易得多:
map.put( "SaintVincentandtheGrenadines", "Saint Vincent and the Grenadines" );,然后在地图中查找您的输入字符串。 -
顺便说一句,Holland 是一个地区的名称,而不是一个国家/地区的名称。该国的官方名称为 Nertherl 和 S。