java - java 字符串生成器

标签 java stringbuilder

我正在尝试存储一个字符串并判断它是大写/小写字母还是数字,如果字符是小写字母,则重新显示大写字符,如果字符是大写字母,则重新显示小写字符 如果字符是数字,则将其显示为星号。我可以用数字来实现,但如果我为字母添加 .toString().toLowerCase() 或 .toUpperCase() ,程序就会不断循环。我该怎么办?

public class CharacterArray {
    public static void main(String[] args) {
        StringBuilder input = new StringBuilder("800 Test St NY");
        for (int i = 0; i < input.length(); i++) {
            System.out.println(input.charAt(i));

            if(Character.isDigit(input.charAt(i))){
                input.replace(i,i+1,"*");
            }
            else if(Character.isUpperCase(input.charAt(i))) {
                input.replace(i, i+1,input.toString().toLowerCase());
            }
            else if(Character.isLowerCase(input.charAt(i))) {
                input.replace(i, i+1,input.toString().toUpperCase());
            }
            System.out.println(input);
        }
    }
 }

最佳答案

当你这样做时:

input.replace(i, i+1, input.toString().toLowerCase());

您正在用整个字符串(小写)替换一个字符,使输入变得越来越长,因此您永远无法到达末尾。

相反:

input.replace(i, i+1, input.substring(i,i+1).toLowerCase());

与转换为大写字母的位置类似。

编辑:修复了将错误的参数类型传递给replace的问题。

Volune 的答案看起来更好。使用它。

关于java - java 字符串生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25922801/

相关文章:

java - Build.version < 16 的 setBackground 和 getBackground 方法

Java、带有 MySQL 的 LDAP 以及用户身份验证

java - 在字符串中写入html

vb.net - AppendLine 和替换

c# - StringBuilder 中的换行符

java - 字符串操作,修改原始字符串的 subString() 方法

java - StringBuilder JAVA 的性能问题

java - 如何在数组/数组列表中存储多个用户输入(String、Int、Double)并输出存储的数据(Java)?

java - 部署 Grails 应用程序时出错 - 初学者

java - 在Java中使用省略号(...)?