【问题标题】:Replace Space to Hyphen将空格替换为连字符
【发布时间】:2011-07-12 20:43:53
【问题描述】:

我正在尝试将空格字符替换为字符串中的连字符。

String replaceText = "AT AT";
replaceText.replace(' ', '-');

但是当我这样做时,我似乎无法替换角色。我尝试了replaceAll() 方法,它也不起作用。

++++++答案+++++++

对不起我的错误..深夜编程的结果:(

感谢您的回答,我可能无法回答所有问题,所以我会检查第一个答案

replaceText = replaceText.replace(' ', '-');

【问题讨论】:

  • 我认为压力字符串下面的众多答案是不可变的。 :)
  • @Brent:嗯,也许我需要让我的答案更加突出:更大、更粗的文字!
  • 还有 6 分钟检查答案.. 该死的我讨厌这个 :(
  • 睡眠不足是愚蠢编程错误 (SPI) 的第二大来源。 #1来源,你问? !@#$%ing mondays.
  • 哈哈,好吧,最后期限,最后期限:(

标签: java android string


【解决方案1】:
replaceText = replaceText.replace(' ', '-');

字符串为immutable,创建后无法更改。所有以某种方式修改字符串的方法都将返回一个包含修改的新字符串。

【讨论】:

    【解决方案2】:

    字符串是不可变的。

    您需要保存replace() 返回的值。 如果要替换多个匹配项,请使用replaceAll()。

    String replaceText = "AT AT";
    replaceText = replaceText.replaceAll(" ", "-");
    

    正如@Mark Peters 在 cmets 中指出的那样,replace(Char, Char) 足以(并且更快)替换所有出现的事件。

    String replaceText = "AT AT";
    replaceText = replaceText.replace(' ', '-');
    

    如果这个事实困扰你:immutability is a Good Thing.

    【讨论】:

    • @Rob,hmmmmmm...我不知道...可能不是?
    • 可能不是......但那个大胆的信息让我想知道。
    • replace(char, char) 替换所有匹配项,重载 replace(CharSequence, CharSequence) 也是如此。使用replaceAll 将正则表达式混入其中是一种倒退,因为现在您必须考虑转义特殊字符,而且性能会降低。
    【解决方案3】:

    replace and replaceAll 方法返回一个字符串,替换后的结果。您是在使用返回值,还是希望 replaceText 字符串发生变化?如果是后者,您将看不到变化,因为字符串是immutable。

    String replaceText = "AT AT";
    String replaced = replaceText.replace(' ', '-');
    
    // replaced will be "AT-AT", but replaceText will NOT change
    

    【讨论】:

      【解决方案4】:

      replace方法返回一个字符串,所以你需要重新分配你的字符串变量,即

      String replaceText = "AT AT";                         
      replaceText = replaceText.replace(' ', '-'); 
      

      【讨论】:

        【解决方案5】:

        字符串是不可变的。你需要使用replace的返回值:

        replaceText = replaceText.replace(' ', '-');
        

        【讨论】:

          【解决方案6】:
          /*You can use below method pass your String parameter and get result as   String  spaces replaced with hyphen*/
            private static String replaceSpaceWithHypn(String str) {
              if (str != null && str.trim().length() > 0) {
                  str = str.toLowerCase();
                  String patternStr = "\\s+";
                  String replaceStr = "-";
                  Pattern pattern = Pattern.compile(patternStr);
                  Matcher matcher = pattern.matcher(str);
                  str = matcher.replaceAll(replaceStr);
                  patternStr = "\\s";
                  replaceStr = "-";
                  pattern = Pattern.compile(patternStr);
                  matcher = pattern.matcher(str);
                  str = matcher.replaceAll(replaceStr);
              }
              return str;
          }
          

          【讨论】:

            【解决方案7】:

            如果您要替换许多字符串,您可以考虑使用 StringBuilder 来提高性能。

            String replaceText = "AT AT";
            StringBuilder sb = new StringBuilder(replaceText);
            sb.Replace(' ', '-');
            

            【讨论】:

              猜你喜欢
              • 2019-12-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-03-31
              • 2014-03-16
              • 1970-01-01
              • 1970-01-01
              • 2011-08-14
              相关资源
              最近更新 更多