java - 更改给定字符串中字母的大小

标签 java arraylist uppercase lowercase

我有代码可以将小写字母更改为大写字母,反之亦然。比我写的更快的方法是什么?

public static String flipcase(String text) {

   ArrayList<Character> arry2 = new ArrayList<Character>();
   char[] array = text.toCharArray();
   char x = ' ';
   char y = ' ';

   for (int i = 0; i <array.length; i++) {
       if (Character.isLowerCase(array[i])) {
           x = Character.toUpperCase(array[i]);
           arry2.add(x);
       } else if (Character.isUpperCase(array[i])){
           y =  Character.toLowerCase(array[i]);
           arry2.add(y);
       } else if (Character.isSpace(array[i])) {
           arry2.add(array[i]);
       }
   }
   StringBuilder result = new StringBuilder(arry2.size());
   for (Character c : arry2) {
       result.append(c);
   }
   String output = result.toString();

   return output;
}

public static void main(String[] args) {
   System.out.println(flipcase("To jest Ten FLIP Case"));
}

最佳答案

我认为你的代码会很慢有两个原因:

  1. 您将更改后的字母放入 List 中:这必然意味着您将 char 装箱到 Character 中,这如果您要做很​​多事情,就需要时间。
  2. 您将更改的字母放入列表中,然后将它们复制到 StringBuilder 中。您可以简单地将它们直接放入 StringBuilder 中。

但我想说,直接在 array 中操作并在最后使用 new String(array) 会更快。

char[] array = text.toCharArray();
int j = 0;
for (int i = 0; i <array.length; i++) {
   if (Character.isLowerCase(array[i])) {
       array[j++] = Character.toUpperCase(array[i]);
   } else if (Character.isUpperCase(array[i])) {
       array[j++] = Character.toLowerCase(array[i]);
   } else if (Character.isSpace(array[i])) {
       array[j++] = array[i];
   }
}
return new String(array, 0, j);

toCharArray() 返回支持字符串的 char 数组的副本,因此您可以随意修改它。

这基本上就是StringBuilder正在做的事情;它只是少了一层“层”。

关于java - 更改给定字符串中字母的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902006/

相关文章:

java - 使用复选框自动选择/突出显示组合框中的项目

java - 如何检查我的 RecyclerView 适配器中的每个值?

javascript - 在这种情况下,多维数组值分配如何工作?

java - 为什么 Java Character.toUpperCase/toLowerCase 没有像 String.toUpperCase/toLowerCase 这样的 Locale 参数

java.lang.UnsatisfiedLinkError : no jzmq in java. 库.path

java - 使用toString方法打印ArrayList内容时出错

android - 列出未保持激活的主/详细流程的项目

java - 打印不带方括号和逗号的 ArrayList 元素

android - 将整个 ArrayList<String> 从一个 Activity 传递到 android 中的另一个 Activity

使用 C 中的二维数组将小写字母转换为大写字母