【问题标题】:Java: Replace a specific character with a substring in a string at indexJava:用索引处的字符串中的子字符串替换特定字符
【发布时间】:2017-01-14 12:58:55
【问题描述】:

我正在为如何真正做到这一点而苦苦挣扎。说我有这个字符串

“这个 Str1ng i5 很有趣”

我想将“1”替换为“一”,将 5 替换为“五”

“这 StrOneng iFive 很有趣”

我尝试遍历字符串并手动替换它们,但计数已关闭。我也尝试过使用列表、数组、字符串生成器等,但我无法让它工作:

char[] stringAsCharArray = inputString.toCharArray();
ArrayList<Character> charArraylist = new ArrayList<Character>();

for(char character: stringAsCharArray) {
    charArraylist.add(character);
}

int counter = startPosition;

while(counter < endPosition) {
    char temp = charArraylist.get(counter);
    String tempString = Character.toString(temp);
    if(Character.isDigit(temp)){
        char[] tempChars = digits.getDigitString(Integer.parseInt(tempString)).toCharArray(); //convert to number

        charArraylist.remove(counter);
        int addCounter = counter;
        for(char character: tempChars) {
            charArraylist.add(addCounter, character);
            addCounter++;
        }

        counter += tempChars.length;
        endPosition += tempChars.length;
    }
    counter++;
}

我觉得必须有一种简单的方法来用子字符串替换字符串中的单个字符,而不必进行所有这些迭代。我错了吗?

【问题讨论】:

    标签: java string


    【解决方案1】:
    String[][] arr = {{"1", "one"}, 
                               {"5", "five"}};
    
    String str = "String5";
    for(String[] a: arr) {
        str = str.replace(a[0], a[1]);
    }
    
    System.out.println(str);
    

    这将帮助您用不同的文本替换多个单词。

    或者,您可以使用链式替换来执行此操作,例如:

    str.replace(1, "One").replace(5, "five");
    

    检查这个更好的方法:Java Replacing multiple different substring in a string at once (or in the most efficient way)

    【讨论】:

      【解决方案2】:

      试试下面的:

      string = string.replace("1", "one");
      string = string.replace("5", "five");
      

      .replace 用指定字符串替换所有出现的给定字符串,非常有用。

      【讨论】:

        【解决方案3】:

        你可以的

        string = string.replace("1", "one");
        
        1. 不要使用replaceAll,因为它会根据正则表达式匹配进行替换(因此您必须小心模式中的特殊字符,这不是问题)。

        2. 尽管有名字,replace 也替换了所有次出现。

        3. 由于字符串是不可变的,请务必在某处分配结果值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-20
          • 2012-06-02
          • 1970-01-01
          • 1970-01-01
          • 2017-04-10
          • 1970-01-01
          • 2020-10-04
          相关资源
          最近更新 更多