Java 如何在单独的方法中编辑字符串中的特定字符? 公共静态字符串替换感叹号(字符串userText){ int i=0; 对于(i=0;i

Java 如何在单独的方法中编辑字符串中的特定字符? 公共静态字符串替换感叹号(字符串userText){ int i=0; 对于(i=0;i,java,string,methods,Java,String,Methods,我正在尝试替换所有的“!”在带有“.”的字符串中,但我遇到了意外的类型错误。 这意味着什么?我如何修复它 另外,用户文本来自main而不是此本地方法是否会影响我编辑字符串的能力?string是不可变的,如果替换string中的任何字符,则会创建新的string对象,因此我更喜欢使用StringBuilder public static String replaceExclamation(String userText){ int i = 0; for ( i=0; i < us

我正在尝试替换所有的“!”在带有“.”的字符串中,但我遇到了意外的类型错误。
这意味着什么?我如何修复它


另外,用户文本来自main而不是此本地方法是否会影响我编辑字符串的能力?

string
是不可变的,如果替换
string
中的任何字符,则会创建新的
string
对象,因此我更喜欢使用
StringBuilder

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;
}
或者您可以使用
replaceAll(字符串正则表达式,字符串替换)


String
实例是不可变的。为了“编辑”一个
字符串
,您必须创建一个新实例,请参阅。您还试图将
分配给一个无效的方法调用。在userText.charAt(i)=”中,左侧是一个值,而不是一个变量。
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;
}
String result = userText.replace('!', '.');
String result = userText.replaceAll("!", ".");