【问题标题】:Java Replace Character At Specific Position Of String? [duplicate]Java替换字符串特定位置的字符? [复制]
【发布时间】:2012-07-20 07:04:39
【问题描述】:

我正在尝试替换字符串特定位置的字符。

例如:

String str = "hi";

将字符串位置 #2 (i) 替换为另一个字母“k”

我该怎么做? 谢谢!

【问题讨论】:

    标签: java string replace char


    【解决方案1】:

    如果你需要重用一个字符串,那么使用StringBuffer

    String str = "hi";
    StringBuffer sb = new StringBuffer(str);
    while (...) {
        sb.setCharAt(1, 'k');
    }
    

    编辑:

    请注意,StringBuffer 是线程安全的,而使用 StringBuilder 更快,但不是线程安全的。

    【讨论】:

      【解决方案2】:

      使用StringBuilder:

      StringBuilder sb = new StringBuilder(str);
      sb.setCharAt(i - 1, 'k');
      str = sb.toString();
      

      【讨论】:

        【解决方案3】:

        替换指定位置的字符:

        public static String replaceCharAt(String s, int pos, char c) {
           return s.substring(0,pos) + c + s.substring(pos+1);
        }
        

        【讨论】:

        • 帮我从一个位置替换了几个字符。
        【解决方案4】:

        凯!

        首先,在处理字符串时,您必须参考它们在 0 基本约定中的位置。这意味着如果您有这样的字符串:

        String str = "hi";
        //str length is equal 2 but the character
        //'h' is in the position 0 and character 'i' is in the postion 1
        


        考虑到这一点,解决这个问题的最好方法是创建一个方法来替换字符串中给定位置的字符,如下所示:

        方法:

        public String changeCharInPosition(int position, char ch, String str){
            char[] charArray = str.toCharArray();
            charArray[position] = ch;
            return new String(charArray);
        }
        

        那么你应该这样调用方法'changeCharInPosition':

        String str = "hi";
        str = changeCharInPosition(1, 'k', str);
        System.out.print(str); //this will return "hk"
        

        如果您有任何问题,请不要犹豫,发布一些内容!

        【讨论】:

        • 这个可以让你用空替换字符(清空/删除它)吗?
        • 什么都没有是什么意思?一个空字符串还是一串空格?
        • 我不知道我在想什么。显然空字符串"" 可以用作ch 的参数。
        • 是的,就是这样! @trusktr
        【解决方案5】:

        Petar Ivanovreplace a character at a specific index in a string question的回答

        字符串在 Java 中是不可变的。您无法更改它们。

        您需要创建一个替换字符的新字符串。

        String myName = "domanokz";
        String newName = myName.substring(0,4)+'x'+myName.substring(5);
        

        或者您可以使用 StringBuilder:

        StringBuilder myName = new StringBuilder("domanokz");
        myName.setCharAt(4, 'x');
        
        System.out.println(myName);
        

        【讨论】:

          猜你喜欢
          • 2017-04-10
          • 1970-01-01
          • 2017-09-17
          • 2021-09-17
          • 2021-01-27
          • 2013-05-12
          • 2015-05-05
          • 1970-01-01
          • 2015-10-18
          相关资源
          最近更新 更多