为了账号安全,请及时绑定邮箱和手机立即绑定

在大写字符java之间添加空格

在大写字符java之间添加空格

慕尼黑8549860 2021-08-25 16:36:53
我是 Java 的初学者。下面是我写的一段代码。目的是在每个大写字符之间添加一个空格,例如 string="ILoveMyDog" 到 "I Love My Dog"。然而,这段代码的结果是“ILoveMy Dog”。有人可以帮我弄清楚出了什么问题吗?upperCaseList 是另一种提取所有大写字符的索引并将它们放入列表的方法,我很确定那部分是正确的for (int i = 0; i < upperCaseList.size(); i++) {    newStr = w.replace(w.substring(upperCaseList.get(i), upperCaseList.get(i)+1), " "+ w.substring(upperCaseList.get(i), upperCaseList.get(i)+1));    }return newStr
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

这是因为您String.replace通过newStr在循环内重新分配来覆盖结果。因此,您只能看到最后一次替换的效果。


假设 的内容upperCaseList是1, 5, 7。


在循环迭代 1 之后,newStr有I LoveMyDog


在循环迭代 2 之后,newStr有ILove MyDog(您没有使用先前的结果,而是使用原始字符串)


在循环迭代 3 之后,newStr有ILoveMy Dog


试试这个,


String newStr = w;

for (int i = 0; i < upperCaseList.size(); i++) {

    newStr = newStr.replace(w.substring(upperCaseList.get(i), upperCaseList.get(i)+1), " "+ w.substring(upperCaseList.get(i), upperCaseList.get(i)+1));

}

不过有很多方法可以解决这个问题。不是存储包含大写字符的索引列表并使用String.substringand String.replace,您可以使用StringBuilder通过循环字符并检查它是否是大写/小写来从原始字符串构建字符串。


StringBuilder resultBuilder = new StringBuilder();


for (int i = 1; i < w.length(); i++) { //Note: Starting at index 1

    if (Character.isUpperCase(w.charAt(i))) {

        resultBuilder.append(" ")

                .append(w.charAt(i));

    } else {

        resultBuilder.append(w.charAt(i));

    }

}

System.out.println(resultBuilder.toString());


查看完整回答
反对 回复 2021-08-25
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

不确定您是如何创建 upperCaseList 的,我建议为所有人创建一个循环。希望下面的代码可以满足您的要求。


public void test(){


    String str ="ILoveMyDog";

    StringBuilder strBuilder  = new StringBuilder();


    for (int i = 0; i< str.length() ; i++) {

        if(Character.isUpperCase(str.charAt(i))){

            //add space

            strBuilder.append(" ");

        }

        //add the orginal char

        strBuilder.append(str.charAt(i));

    }

    //use toString method 

    System.out.println(strBuilder.toString());

}


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信