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

时间:2015-12-17 14:52:31

标签: java string

我尝试将字符串转换为更好的阅读字符串。喜欢" 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"

4 个答案:

答案 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("  ", " ");