如何插入","在字符串的每个字符之间

时间:2015-04-03 15:32:19

标签: java string loops split substring

我在我的程序中的一个点,我需要在通过另一个方法传递它之前在字符串中设置标记,我有它,所以每个第4个字符将有一个" |"插入,这是标记一个行中断。不是我想把每个字母都放在外面的标记之间" |"然后放一个","。这两个char数组方法不会在这里工作,否则我会尝试使用它,但我不是在寻找一个char数组。

public static String matrixFormatter(String x){

x = x.substring(0, 4) + "|" + x.substring(4, x.length());
    return x;
 }
到目前为止,这项工作有效,现在我想添加一个","在每个char之间,我认为下面的代码可以工作,这很容易,但我错了。

public static String matrixFormatter(String x){

for(int i = 0; i<=x.length(); i+=4){
    for(int j = 0; j<=x.length(); i++){
    x = x.substring(0, i) + "|" + x.substring(i, x.length());
    x = x.substring(0, j) + "|" + x.substring(j, x.length());
    }
}
return x;

}

6 个答案:

答案 0 :(得分:0)

可以用一种方法完成:

public static String matrixFormatter(String x) {
    List<String> chars = Arrays.asList(x.split(""));
    String result = chars.get(0);
    for (int i = 1; i < chars.size(); i++) {
        if (i % 4 == 0)
            result += "|" + chars.get(i);
        else
            result += "," + chars.get(i);
    }
    return result;
}

致电:

System.out.println(matrixFormatter("12345678"));

输出:

1,2,3,4|5,6,7,8

答案 1 :(得分:0)

我不确定我是否理解你的问题,你应该添加一些输入和预期输出更清晰。

    String a = "abcdefghijklmnop";
    String a2 = "";
    for (int i = 0; i < a.length(); i++) {
        if (i != 0) {
            if(i % 4 == 0){
               a2 += "|";
            } else{
               a2 += ",";
            }
        }
        a2 += a.charAt(i);
    }
    System.out.println(a2);

这将产生输出a,b,c,d|e,f,g,h|i,j,k,l|m,n,o,p

答案 2 :(得分:0)

下面的代码在字符串中的字符之间添加“,”。

public static String matrixFormatter(String x){
      String result;
      for(int i = 0; i<x.length()-1; i++){
             result += x.substring(i, i+1) + ",";
       }
      return result+",";
}

答案 3 :(得分:0)

试试这个正则表达式

    s = s.replaceAll("(?<=.)(?=.)", ",");

答案 4 :(得分:0)

可以使用StringBuffer以及Joiner Guava库完成:

public static void main(String[] args) {
    String s = "example";
    System.out.println(withBuilder(s));
    System.out.println(withJoiner(s));
}

private static String withJoiner(String s) {
    return Joiner.on(",").join(Chars.asList(s.toCharArray()));
}

private static String withBuilder(String s)
{
    StringBuilder builder = new StringBuilder(s);
    int index = 1;
    for (int i = 0; i < s.length() ; i++)
    {
        builder.insert(index, ",");
        index +=2;
    }
    return builder.toString();
}

输出是:

e,x,a,m,p,l,e,
e,x,a,m,p,l,e

答案 5 :(得分:0)

public static String matrixFormatter(String x) {
  resultstr = "";
  int i = 0;
  while(i < x.length()) {
    // If end of string: only add character.
    if (i == x.length() - 1) {
      resultstr += x.substring(i, i + 1);
    } else {
      if ( ((i + 1) % 4) == 0) {
        resultstr += x.substring(i, i + 1)  + "|";
      } else {
        resultstr += x.substring(i, i + 1)  + ",";
      }
    }
    i++;
  }
  return resultstr;
}

Haven没有安装Java,但是通过PHP代码测试了这个概念:

function matrixFormatter($x) {
  $resultstr = "";
  $i = 0;
  while($i < strlen($x)) {
    if ($i == strlen($x) - 1) {
      $resultstr .= $x[$i];
    } else {
      if ( (($i + 1) % 4) == 0) {
        $resultstr .= $x[$i] . "|";
      } else {
        $resultstr .= $x[$i] . ",";
      }
    }
    $i++;
  }
  return $resultstr;
}

matrixFormatter(&#34; abcdefghijklmnopq&#34;)返回&#34; a,b,c,d | e,f,g,h | i,j,k,l | m,n,o,p | q&#34;