【问题标题】:Changing String into altCase将字符串更改为 altCase
【发布时间】:2016-03-13 23:50:28
【问题描述】:

我正在尝试编写将给定字符串更改为 alt 大小写的代码。

"hello" ---> "HeLlO"
"legend of zelda" ---> "LeGeNd oF ZeLdA"

这是我目前所拥有的:

public String altCase(String text) {
    String replace = "";

    for (int i = 0; i < text.length(); i++) {
        if (i % 2 == 0) {
            replace = text.replace(Character.toString(text.charAt(i)),
                    Character.toString(text.charAt(i)).toLowerCase());
        } else {
            replace = text.replace(Character.toString(text.charAt(i)),
                    Character.toString(text.charAt(i)).toUpperCase());
        }
    }

    return replace;
}

replace 变成 text 并且没有其他变化。

这是什么原因造成的,我该如何解决?

【问题讨论】:

    标签: java string char


    【解决方案1】:

    简单代码:

    • 将所有内容转为小写
    • 每隔一个字母转为大写
    • 使用StringBuilder 使代码更简单

    那么就几行,像这样:

    public static String altCase(String text){
        StringBuilder result = new StringBuilder(text.toLowerCase());
        for(int i = 0; i < text.length(); i+= 2)
            result.setCharAt(i, Character.toUpperCase(text.charAt(i)));
        return result.toString();
    }
    

    注意我如何不将字符转换为字符串然后调用toUpperCase(),我直接在字符上调用实用方法Character.toUpperCase()

    【讨论】:

      【解决方案2】:

      试试这个:

      public String altCase(String text)
      {
          String replace = "";
      
          for(int i = 0; i < text.length(); i++)
          {
              if(i%2 == 0)
              {
                  replace += Character.toString(text.charAt(i)).toLowerCase());
              }
              else
              {
                  replace += Character.toString(text.charAt(i)).toUpperCase());
              }
          }
      
          return replace;
      }
      

      只需将小写或大写字符附加到现有字符串即可。我也想看看StringBuilder。见here

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 2019-08-14
      相关资源
      最近更新 更多