在Java中的字符串字符之间添加空格?

在Java中的字符串字符之间添加空格?,java,string,Java,String,我只想在字符串的每个字符之间添加一个空格。有人能帮我弄清楚怎么做吗 例如,给定“JAYARAM”,我需要“jay A R A M”作为结果。将字符串放大为字符数组,在字符数组上循环,并通过在字符后面加空格来创建新字符串。StringBuilder result=new StringBuilder(); StringBuilder result = new StringBuilder(); for (int i = 0; i < input.length(); i++) { if (i

我只想在字符串的每个字符之间添加一个空格。有人能帮我弄清楚怎么做吗


例如,给定
“JAYARAM”
,我需要
“jay A R A M”
作为结果。

将字符串放大为字符数组,在字符数组上循环,并通过在字符后面加空格来创建新字符串。

StringBuilder result=new StringBuilder();
StringBuilder result = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
   if (i > 0) {
      result.append(" ");
    }

   result.append(input.charAt(i));
}

System.out.println(result.toString());
对于(int i=0;i0){ 结果。追加(“”); } result.append(input.charAt(i)); } System.out.println(result.toString());
除非您想循环字符串并“手动”执行,否则您可以这样解决:

yourString.replace("", " ").trim()
这将用空格替换所有“空子字符串”,然后修剪前导/尾随空格


使用正则表达式的替代解决方案:

yourString.replaceAll(".(?=.)", "$0 ")
基本上它说“将所有字符(最后一个除外)替换为字符本身,后跟空格”

关于……的文件

  • (包括
    $0
    语法)
  • (即
    (?=)
    语法)
      • 从字符串创建一个字符数组
      • 循环遍历数组,在数组中的每个项(可能最后一项除外)后添加空格
        +“”
      • 轰…完成了
      迭代字符串中的字符,当存储在新数组/字符串中时,可以在追加每个字符之前追加一个空格

      大概是这样的:

      StringBuilder result = new StringBuilder();
      
      for(int i = 0 ; i < str.length(); i++)
      {
         result = result.append(str.charAt(i));
         if(i == str.length()-1)
            break;
         result = result.append(' ');
      }
      
      return (result.toString());
      
      StringBuilder结果=新建StringBuilder();
      对于(int i=0;i
      这与使用逗号连接数组的问题相同。此版本仅在字符之间正确生成空格,并避免循环中出现不必要的分支:

      String input = "Hello";
      StringBuilder result = new StringBuilder();
      if (input.length() > 0) {
          result.append(input.charAt(0));
          for (int i = 1; i < input.length(); i++) {
              result.append(" ");
              result.append(input.charAt(i));
          }
      }
      
      String input=“Hello”;
      StringBuilder结果=新建StringBuilder();
      if(input.length()>0){
      result.append(input.charAt(0));
      对于(int i=1;i
      如果使用stringbuilder,则在创建对象时初始化长度将非常有效。长度将为2*lengthofString-1

      或者创建一个char数组并将其转换回字符串将产生相同的结果


      a当您编写一些代码时,请确保您也编写了一些测试用例,这将使您的解决方案完整。

      这将适用于在字符串中的任何特定位置插入任何字符

      public static String insertCharacterForEveryNDistance(int distance, String original, char c){
          StringBuilder sb = new StringBuilder();
          char[] charArrayOfOriginal = original.toCharArray();
          for(int ch = 0 ; ch < charArrayOfOriginal.length ; ch++){
              if(ch % distance == 0)
                  sb.append(c).append(charArrayOfOriginal[ch]);
              else
                  sb.append(charArrayOfOriginal[ch]);
          }
          return sb.toString();
      }
      

      我相信他所寻找的是mime代码载体返回类型代码,例如%0D%0A(用于返回或换行) 和 \u00A0(用于间距) 或者
      $#032

      我正在为此创建一个带有动态字符的java方法

      public String insertSpace(String myString,int indexno,char myChar){
          myString=myString.substring(0, indexno)+ myChar+myString.substring(indexno);
          System.out.println(myString);
          return myString;
      }
      
      使用上述任何一项,输出如下:

      H a r e n d r a

      H a r e n d r a

      使用字符串创建并使用其重载方法之一:

      StringBuilder sb = new StringBuilder("JAYARAM");
      for (int i=1; i<sb.length(); i+=2)
          sb.insert(i, ' ');
      System.out.println(sb.toString());
      

      一种简单的方法是拆分每个字符上的字符串,并使用空格作为分隔符连接各个部分

      演示:

      public class Main {
          public static void main(String[] args) {
              String s = "JAYARAM";
              s = String.join(" ", s.split(""));
              System.out.println(s);
          }
      }
      
      J A Y A R A M
      
      输出:

      public class Main {
          public static void main(String[] args) {
              String s = "JAYARAM";
              s = String.join(" ", s.split(""));
              System.out.println(s);
          }
      }
      
      J A Y A R A M
      

      可以将流与java 8一起使用:

      String input=“JAYARAM”;
      input.toString().chars()
      .mapToObj(c->(char)c+“”)
      .collect(收集器.joining())
      .trim();
      //结果:J A Y A R A M
      
      这是家庭作业,对吗?如果是这样,那么就用家庭作业标签来标记它。你试过什么。你读过字符串javadoc吗+1正确答案。最后能够正确使用java的人(而不是创造大量的垃圾轮子改造)@Bohemian-这可能只是一句话,但不是每个人都能理解。为这些人添加了文档链接(以及替代的非regexp解决方案;-)@也许你能帮我学习正则表达式的实际工作原理吗?我看过sun的网站,但不太了解。我的意思是简单地问你是如何形成“(=”)的?“0美元”是什么意思??请向我推荐任何以更简单的方式解释的站点/材料?这将是一个很大的帮助。这个答案虽然它是这里最好的,但不考虑OP的理解级别。for循环=婴儿步骤;在循环中使用+串联确实是一个糟糕的建议。Aioobe的答案可能是最好的……但是对于这样一个问题,我的答案概括了初级程序员(根据问题的复杂性假设)应该如何处理这个问题。这是最有效的解决方案。但不是用更少的字符来实现的。它“错误”的原因在于它的“错误方法”。ie“这里有一个方法,但这不是一个好方法,所以不要在你的代码中都这样做”@Bohemian:这取决于你想要实现什么。如果这是数百万行CSV解析器的核心,需要进行蹩脚的char到wchar转换,那么正则表达式肯定是错误的,所以请停止尝试从您的上帝般的经验中启发我们。虽然这个答案不是最有效的,但它符合问题的复杂程度。不要指望不知道这个问题答案的人能理解正则表达式…婴儿步人@波希米亚人:我已经读过了,也投了赞成票。我对regex是新手,所以我不太懂。我已经开始学习:)@Swagatika:不要盲目听从他的建议。正则表达式是一个有趣的工具,但它会影响性能,当然,对于许多程序员来说,它更难理解。使用最合适的方法。另外:你可能还没有意识到,但是《波希米亚邮报》中有大量的傲慢,傲慢应该总是让你怀疑。@phresnel:谢谢你的建议。我没有跟踪任何人。只是这对我来说是一个新的话题,我真的很想学习如何更好地判断它是否适合美国
      J A Y A R A M