java - Java中计数器的一系列字符串操作

标签 java arrays string counter

问题:

下面的字符串包含多个单词,每个单词用井号 (#) 分隔。 将每个单词按 # 分割后,

  1. 反转单词中的每个字符。
  2. 为每个单词启动计数器表格 1。
  3. 查找字符 a、e、i、o、u,如果找到该字符,则将其替换为计数器值并递增到 1。
  4. 重置每个单词的计数器。
  5. 打印最终的字符串。 打印末尾的字符串。 示例:

输入:my#name#is#manan 输出:ym 1m2n s1 n1n2m

我的代码是:

import java.lang.*;
import java.io.*;
import java.util.*;

class StrSplit {
    public static void main(String[] args) {
        String sentence = "my#name#is#manan";
        String[] word = sentence.split("#");
        String[] reverseword = new String[word.length];

        for (int i = 0; i < word.length; i++) {
            StringBuilder revword = new StringBuilder(word[i]);     // METHOD FOR USING .reverse()
            revword.reverse();      // REVERSING

            reverseword[i] = revword.toString();        // SAVING REVERSED WORDS INTO AN ARRAY.
        }

        for (int i = 0; i < reverseword.length; i++) {
            int counter = 1;
            String current = reverseword[i];        //SELECTING A WORD

            for (int j = 0; j < current.length(); j++) {
                char ch = current.charAt(j);        //SELECTING A CHARACTER 

                char count=(char)(counter+ '0');     //VOWEL COUNTER

                if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
                    current = current.replace(current.charAt(j),count);     //REPLACE VOWEL WITH NUMBER
                    counter++; 
                }
            }           
            counter=1;   
            
            StringBuilder output= new StringBuilder(current);
            output.append(' ');
            System.out.print(output);
        }
    }
}

但是我的输出中有一个错误。我的输出是:

ym 1m2n s1 n1n1m 

虽然应该是:

ym 1m2n s1 n1n2m 

问题是,只有元音不同时计数器才会递增。

最佳答案

current.replace(current.charAt(j),count) 替换所有出现的 current.charAt(j),因此如果相同的元音出现多次,您可以在一次调用中替换所有出现的位置,并仅增加计数器一次。

如果需要更改,您可以仅替换第一个出现的位置

current = current.replace(current.charAt(j),count); 

current = current.replaceFirst(current.substring(j,j+1),Integer.toString(counter));

这样,对于每个替换的字符,计数器都会增加一次。

现在的输出是:

ym 1m2n s1 n1n2m

请注意,replaceFirst() 需要 String 参数,而不是 char

关于java - Java中计数器的一系列字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68194028/

相关文章:

c - 替换 C 中字符串中所有出现的子字符串

C++11 字符串初始化

java - 从类路径外的目录加载资源时出现 NPE

java - Assets 文件目录给出 java.io.FileNotFoundException eclipse

javascript - 解析字符串以创建子字符串数组

java - 如何像存储在二维数组中一样访问数组中的数据?

c - 将字符串数组添加到c中的字符指针

php - 如何仅在 PHP 中使用 str_replace() 删除一定次数的文本?

java - 对 JRE 和 JDK 以及最新的 Java 版本感到困惑

java - 无法从 Java 程序内部调用 "gcc"