Java 如何在单词或字符前后插入空格?

Java 如何在单词或字符前后插入空格?,java,string,Java,String,我尝试将字符串转换为更好的可读性字符串。就像圣皮尔和米克隆进入圣皮尔和米克隆或圣文森特和格林纳丁斯进入 圣文森特和格林纳丁斯 我的做法是: public static String whitespace(String str) { String string = str; if (string.contains("and")) { String[] parts = string.split("and"); String part1 = part

我尝试将字符串转换为更好的可读性字符串。就像圣皮尔和米克隆进入圣皮尔和米克隆或圣文森特和格林纳丁斯进入 圣文森特和格林纳丁斯

我的做法是:

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;
    } }
这显然很糟糕。输出也是错误的。它适用于和,但如果字符串中也有一个,它只适用于


输出用于此字符串:塞尔维亚和欧洲美洲->塞尔维亚和欧洲美洲

我建议使用replace,如下所示:

string.replace("the", " the ");
string.replace("and", " and ");
string.replace("  ", " ");
您可以尝试以下方法:

String str = "SerbiaandEuropetheAmerica";
str = str.replaceAll("the", " the ");
str = str.replaceAll("and", " and ");
System.out.println("str = " + str);
结果是:

str = Serbia and Europe the America

我认为,您的问题与以下事实有关:在第二种情况下,如果您使用字符串而不是partres变量进行拆分。

仔细想想,如果以下情况属实,则有一个regexp解决方案:

每个国家名称的每个单词都是Initcap

2当字符串中有两个国家在附近时,它们被除以,或者你在评论中提到过,或者被和,因此没有像HollandFrance或HollandTeamerica这样的字符串:

String str = "Serbia,FinlandandHolland,theAmerica";
System.out.println(str.replaceAll("([A-Z]|and|the)(?!and|,|$)", " $1").trim());

这仍然是一个权宜之计,所以请仔细检查结果。

和“与”将被分成“与”和“与”?为什么“圣文森特和格林纳丁斯”是“圣文森特和格林纳丁斯”,而“圣皮埃尔和米克隆”是“圣皮埃尔…”?@LuiggiMendoza或更好,Holl And@bastel String类有replaceAll方法,但您的方法可能无法按预期工作。我担心,您需要一本字典,即使这样也会很困难。@bastel在这种情况下,创建所有可能的国家的地图要容易得多,例如:map.put Saint VincentandtheGrinadines,Saint Vincent and the Grinadines;然后在地图上查找输入字符串。顺便说一下,荷兰是一个地区的名称,而不是一个国家的名称。这个国家的正式名称是Nertherl and S。你认为圣文森特和圣文森特会如何分裂?我不认为会这样,因为你所说的行为显然不是被提问者想要的。圣文森特和格林纳丁斯进入圣文森特和格林纳丁斯我想知道是谁因为你对这个问题的误解而给了你分数。请看一下这个问题的编辑。你会明白这不是误解。在我最后一次对这个问题的评论中,我只想指出一点,这是原帖。请澄清您的误解,我为《国家以土地结束》做了一个例外。@bastel我不明白这怎么是正确的解决方案?您最初要求将圣文森特拆分为圣文森特,您是如何通过上面的代码实现的?为什么你认为另外两个答案是错误的?不要忘记做STR= STR.REST,即,删除两个可以创建的结果空间:THED和-> -和-空间,由于愚蠢的自动套用而被减去。