java - 无法删除字符串中的所有大写字符

标签 java

我无法删除字符串中的所有大写字符。任何见解表示赞赏。

如果我输入 MANDY 作为 str,我得到的输出是 AD。我不确定为什么会有这种行为。

StringBuilder outString = new StringBuilder(str);
for(int i = 0; i<outString.length(); i++){
    if(Character.isUpperCase(outString.charAt(i))){
        outString.deleteCharAt(i);
    }
}
return outString.toString();

谢谢

最佳答案

通过删除字符,您可以更改索引,因此不会删除一个接一个的大写字符。

一个简单的“技巧”是以相反的方式迭代缓冲区(从末尾开始)。这样你只会影响已经处理过的字符的索引

for(int i = outString.length()-1; i>=0; i--){
    if(Character.isUpperCase(outString.charAt(i))){
       outString.deleteCharAt(i);
   }
}

关于java - 无法删除字符串中的所有大写字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38238372/

相关文章:

java - Lambda 是否完全废除了 java 8 中匿名内部类的用法?

java - 如何在SWT中构建TableViewer的弹出窗口?

java - 有没有办法不在Java中实现接口(interface)方法?

java - Class.forName (“com.mysql.jdbc.Driver” ) 在 Raspberry Pi 上不起作用

java - 在登录页面上实现 HDIV

java - 如果 pom.xml 文件有错误,创建 Maven 项目时可能会出现什么问题

java - 如果我使用 JDK 8,我的应用程序会在 android 4.0 上运行吗

java - 获取反序列化器中的属性类型( jackson )

java - 仅在线程完成后继续

java - 充气城堡 : need of bcprov-jdk15 and bcprov-jdk16