for循环中的Java特定字符

标签 java for-loop

我编写了一段代码来反转给定字符串中元音的顺序,但我还需要保持元音大写在字符串中的原始位置。例如,输入:Java Is Fun 输出:Juvi As Fan 而不是 JuvI as Fan

这是我到目前为止的代码,当前输出 JuvI 作为 Fan:

static boolean isVowel(char c)
  {
      return (c == 'a' || c == 'A' || c == 'e'
                || c == 'E' || c == 'i' || c == 'I'
                || c == 'o' || c == 'O' || c == 'u'
                || c == 'U');
public static String reverseVowels(String text)
  {
      int index = 0;
      char[] str = text.toCharArray();
      String vowel = "";
      for (int i = 0; i < str.length; i++)
      {
          if (isVowel(str[i]))
          {
              index++;
              vowel += str[i];
          }
      } 
      for (int i = 0; i < str.length; i++)
      {
          if (isVowel(str[i]))
          {
              str[i] = vowel.charAt(--index);
          }
      }
      return String.valueOf(str);

最佳答案

我会记录所有大写字母(如果字符串中大写字母多于小写字母,则记录小写字母),例如。

List<Integer> capitalLetters = new ArrayList<>(); // Positions of capital letters.

for (int i = 0; i < text.length(); i++) {
    if (Character.isUpperCase(text.charAt(i))) {
         capitalLetters.add(i);
    }
}
text = text.toLowerCase();

int index = 0;
char[] str = text.toCharArray();
String vowel = "";
for (int i = 0; i < str.length; i++) {
    if (isVowel(str[i])) {
        index++;
        vowel += str[i];
    }
}
for (int i = 0; i < str.length; i++) {
    if (isVowel(str[i])) {
        str[i] = vowel.charAt(--index);
    }
}

// Recapitalise.
for (int pos : capitalLetters) {
    str[pos] = Character.toUpperCase(str[pos]);
}
return str;

我还将您的元音检查功能更改为:

c = Character.toLowerCase(c);
return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');

避免检查大写字母

关于for循环中的Java特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60197207/

相关文章:

java - 将对象类型转换为任何 Collection 类型

Javascript For Loop 替代将初始变量设置为 1?

c++ - 如何循环计数,数字和字母的程序?

java - WriteInt-RandomAccessFile - java

java - 将 EJB 和 Servlet 用于 Web 应用程序的首选方法是什么?

java - android中的日期错误存储在sqlite中

java - For Each 循环有效,但迭代器无效

JavaScript:for 循环内的 while 循环

r - 在R中的for循环中循环多个数据帧

java - JNI 库在垃圾回收时释放内存?