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

马南刺客

题:

下面的字符串包含多个单词,每个单词由 hash(#) 分隔。用#分割每个单词后,

  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.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

包含一系列子字符串的字符串的聚合计数

如何用sed替换一系列字符串中的一系列数字

R从列中的一系列行中删除字符串字符

如何用R中的字符串字符替换一系列int值

为什么 <= 在 Python 中评估字符串的一系列字符?

从一系列列中的字符串中删除不需要的部分

如何在 kotlin 中搜索句子中的一系列字符串

用一系列数字填充整数数组,该数字是字符串(java)

将输入作为一系列字符串,直到在 JAVA 中找到 #

在一系列列表中重新分配字符串值

将字符串添加到一系列git commits消息中

如何根据Google表格中的一系列值动态创建字符串

Python:在字符串中查找一系列汉字并应用函数

如何将熊猫列中的一系列字符串转换为整数

计算C中一系列字符串中的元音数量

JQuery:使数组中的一系列字符串按顺序淡入淡出

在熊猫中,如何将一系列浮点数或无浮点数转换为带整数的字符串

使用一个错位的字符串打印一系列字符串

如何批量从一系列字符串的左侧修剪字符串?

从红宝石中的一系列字符串数组中获取一组数字

是否有一个函数可以“评估”字符串中的一系列数字?

如何使用 Bash 从一个文件中提取一系列字符串并替换另一个文件中的一系列单独的字符串?

删除一系列字符串的最后一个字符

从一系列单元格中计算单元格中的子字符串(excel)

如何根据用户输入的首字母缩写从数组列表中删除一系列字符串对象?

在一系列单元格中获取 5 个最常见的分隔子字符串

从SQL Server(2012)中的一系列csv字符串生成二进制矩阵?

如何查找字符串中是否缺少一系列非浮点数字

在 Google 表格中,如何计算一系列单元格内特定的单个文本字符串?