首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stringbuilder java

Stringbuilder java
EN

Stack Overflow用户
提问于 2014-09-19 05:38:58
回答 4查看 1.1K关注 0票数 0

我正在尝试存储一个字符串,并确定它是大写/小写字母还是数字,如果字符是小写字母,则重新显示大写字符,如果字符是大写字母,则重新显示小写字符,如果字符是数字,则将其显示为星号。我可以用数字来表示,但是如果我为字母包含.toString()、.toLowerCase()或.toUpperCase(),程序就会继续循环。我该怎么办?

代码语言:javascript
复制
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);
        }
    }
 }
EN

回答 4

Stack Overflow用户

发布于 2014-09-19 05:44:03

执行此操作时:

代码语言:javascript
复制
input.replace(i, i+1, input.toString().toLowerCase());

您正在用整个字符串(小写)替换一个字符,这使得input越来越长,因此您永远不会到达它的末尾。

而是:

代码语言:javascript
复制
input.replace(i, i+1, input.substring(i,i+1).toLowerCase());

类似地,您可以将其转换为大写。

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

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

票数 2
EN

Stack Overflow用户

发布于 2014-09-19 05:49:56

因为您只想替换一个字符,所以应该使用StringBuilder#setCharAt

代码语言:javascript
复制
if (Character.isDigit(input.charAt(i))) {
    input.setCharAt(i, '*');
} else if (Character.isUpperCase(input.charAt(i))) {
    input.setCharAt(i, Character.toLowerCase(input.charAt(i)));
} else if (Character.isLowerCase(input.charAt(i))) {
    input.setCharAt(i, Character.toUpperCase(input.charAt(i)));
}

这样你就知道你不会改变字符串的长度。

票数 2
EN

Stack Overflow用户

发布于 2014-09-19 05:46:31

使用StringUtils.swapCase

代码语言:javascript
复制
String res = StringUtils.swapCase(original).replaceAll("\\d","*");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25922801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档