2016-03-05 241 views
0

我想只替换一个字符串的一个字符。但是,只要字符在字符串中出现多次,所有这些字符都将被替换,而我只希望替换特定字符。例如:替换字符串的单个字符

String str = "hello world"; 
    str = str.replace(str.charAt(2), Character.toUpperCase(str.charAt(2))); 
    System.out.println(str); 

给出结果:

heLLo worLd 

,而我希望它是:

heLlo world 

我能做些什么来实现这一目标?

+1

请参阅此链接了解如何解决这个问题的方法:http://stackoverflow.com/questions/6952363/replace-a-character-at-a-specific-index-in-a-string – slashNburn

回答

0

替换将不起作用,因为它将替换字符串中的所有出现。 replaceFirst将无法​​正常工作,因为它总是会删除 的第一个匹配项。

由于字符串不可变,所以无论哪种方式,都需要创建一个新的字符串。可以通过以下任一方式完成。

  • 使用子串,并手动创建所需的字符串。

    int place = 2; 
    str = str.substring(0,place)+Character.toUpperCase(str.charAt(place))+str.substring(place+1); 
    
  • 将字符串的字符数组,更换要使用索引的字符,然后转换阵列回字符串。

0

您应该使用StringBuilder而不是String来实现此目标。

0

replace(char, char)将更换指定的char的所有出现,不仅索引的char。从documentation

返回一个新字符串,该字符串由newChar替换此字符串中的所有oldChar。

你可以做这样的事情

String str = "hello world"; 
String newStr = str.substring(0, 2) + Character.toUpperCase(str.charAt(2)) + str.substring(3); 
+0

does not work,because of character 1 in location will be gone。 – PyThon

+0

@PyThon修好了,谢谢。 – Guy

0
String str = "hello world"; 
    char[] charArray = str.toCharArray(); 
    charArray[2] = Character.toUpperCase(charArray[2]); 
    str = new String(charArray); 
    System.out.println(str); 
0

此代码的工作太

 String str = "hello world"; 
    str = str.replaceFirst(String.valueOf(str.charAt(2)), 
      String.valueOf(Character.toUpperCase(str.charAt(2)))); 
    System.out.println(str);