【问题标题】:How can I edit specific characters from a string within a separate method?如何在单独的方法中编辑字符串中的特定字符?
【发布时间】:2019-08-01 08:31:21
【问题描述】:
public static String replaceExclamation(String userText){
   int i = 0;
   for ( i=0; i < userText.length(); ++i) {
      char currentChar = userText.charAt(i);
      if (currentChar == '!') {
         userText.charAt(i) = ".";
      }
   }
   return userText;
}

我正在尝试替换所有的“!”在带有 '.' 的字符串中但我遇到了意外的类型错误。
这是什么意思,我该如何解决?

另外,userText 来自 ma​​in 而不是这个本地方法这一事实是否会影响我编辑字符串的能力?

【问题讨论】:

  • String 实例是不可变的。为了“编辑”String,您必须创建一个新实例——参见String.replace(char,char)。您还试图将"." 分配给一个无效的方法调用。
  • 在 userText.charAt(i) = "."左边是一个值而不是一个变量。

标签: java string methods


【解决方案1】:

String 是不可变的,如果你替换 String 中的任何字符,那么新的 String 对象就会被创建,所以我更喜欢使用 StringBuilder

public static StringBuilder replaceExclamation(StringBuilder userText){
  int i = 0;
 for ( i=0; i < userText.length(); ++i) {
  char currentChar = userText.charAt(i);
  if (currentChar == '!') {
     userText.setCharAt(i,'.');
    }
  }
  return userText;
}

或者你可以使用replace(char oldChar, char newChar)

String result = userText.replace('!', '.');

或者你可以使用replaceAll(String regex, String replacement)

String result = userText.replaceAll("!", ".");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2016-04-07
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多