【问题标题】:How to insert Space after every Character of an existing String in Java?如何在Java中现有字符串的每个字符后插入空格?
【发布时间】:2010-12-17 11:21:43
【问题描述】:

我需要在字符串的每个字符后插入一个空格。

String name = "Joe";

应该变成:"J o e"

【问题讨论】:

    标签: java string


    【解决方案1】:

    更短的将使用正则表达式:

    System.out.println("Joe".replaceAll(".(?!$)", "$0 "));
    

    【讨论】:

    【解决方案2】:

    对于 Android 和 Kotlin 用户,如果您想在每个 X 个字符后添加空格,请使用此

    val stringWithSpaceAfterEvery4thChar = stringWith12Chars?.replace("....".toRegex(), "$0 ")
    

    在这里,我在方法中添加了 4 个点,以便在整个字符串中的每 4 个字符之后添加 空格。 如果您希望在每 2 个字符后添加空格,则在方法中仅添加 2 个点

    我的变量:

    stringWith12Chars = "123456789012"
    

    输出将是,

    stringWithSpaceAfterEvery4thChar = "1234 5678 9012"
    

    【讨论】:

    • 这简直太完美了!
    • 你给出了正确的逻辑。
    【解决方案3】:

    类似:

    String joe = "Joe";
    StringBuilder sb = new StringBuilder();
    
    for (char c: joe.toCharArray()) {
       sb.append(c).append(" ");
    }
    
    System.out.println(sb.toString().trim());
    

    【讨论】:

    • 轻微优化:sb.setLength(sb.length() > 0 ? sb.length() - 1 : 0).toString(); 即修剪构建器,而不是结果。
    【解决方案4】:

    这将隔开每个单词中的所有字母,而不是单词之间的空格

    "Joe Black".replaceAll("\\B", " ") -> "J o e B l a c k"
    

    这将为每个字符放置空格(包括原始空格)

    "Joe Black".replaceAll("\\B|\\b", " ") -> " J o e  B l a c k "
    

    【讨论】:

      【解决方案5】:

      使用 kotlin

      val textToBeDevided = "123456789" 
      textToBeDevided
         .subSequence(1, textToBeDevided.length) 
         .chunked(3) // group every 3 chars
         .joinToString(" ") // merge them applying space
      

      【讨论】:

      • .subSequence 调用是多余的,因为String 已经是CharSequence。此外,字符串中的索引从 0 开始,因此您在输出中丢失了 "1"
      【解决方案6】:
      char[] stringArray = strOrig.toCharArray(); 
      StringBuilder sb = new StringBuilder();
      
      for(int index=0; index < stringArray.length; index++) {
         sb.append(stringArray[index]);
         sb.append(" ");
      }
      

      【讨论】:

        【解决方案7】:

        没有正则表达式的解决方案

        name.chars().mapToObj(i -> (char) i + " ").collect(Collectors.joining()).strip()
        

        不喜欢正则表达式,因为编译方法慢

        【讨论】:

          【解决方案8】:

          您可以使用 String 的 toCharArray() 将 Joe 转换为 char[],然后遍历 char[] 将 char 抓取到另一个 char[] 中,并且在将 char 添加到第二个 char[] 时,添加一个空格字符 ' “”。在循环中设置 if-else 以检测最后一个字符,这样您就不会在最后一个字符后面意外添加空格字符。使用 String 对 valueOf() 生成的 char[] 将其转换为 String 对象。

          【讨论】:

            【解决方案9】:

            删除最后的空格:

            String joe = "Joe"; 
            StringBuilder sb = new StringBuilder(); 
            String sep = "";
            for (char c: joe.toCharArray()) { 
                sb.append(sep).append(c);
                sep = " ";
            } 
            
            System.out.println(sb.toString()); 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-05-19
              • 2020-03-04
              • 2017-06-11
              • 1970-01-01
              • 1970-01-01
              • 2011-03-16
              • 1970-01-01
              • 2014-11-09
              相关资源
              最近更新 更多