有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中转换逗号分隔字符中的给定字符串?

public class StringDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String name = "String";
        char[] c = name.toCharArray();
        for (char ch : c) {
            System.out.print(ch);
                System.out.print(",");
        }
    }
}

这给我的输出是

S,t,r,i,n,g,

我不想要最后一个逗号,如何得到S,t,r,I,n,g的输出


共 (5) 个答案

  1. # 1 楼答案

    当然可以,但是对于这一点,您需要一个基于c长度的for循环,其他解决方案并不像IMHO那样直接:

    String name="String";
    char[] c = name.toCharArray();
    for (int i = 0; i < c.length; i++){
        char ch = c[i];
        System.out.print(ch);
        if( i != c.length -1 ){
            System.out.print(",");
        }
    }
    
  2. # 2 楼答案

    您还可以在更高的级别上执行此操作,而无需编写自己的循环。它并没有更快,但代码更清楚地说明了它在做什么:“将我的字符串拆分为多个字符,然后重新连接在一起,用逗号分隔!”

    String name = "String";
    String separated = String.join(",", name.split(""));
    System.out.println(separated);
    

    编辑:String.join()可从Java1.8及更高版本获得

  3. # 3 楼答案

    您可以使用Stream来实现这一点。请在下面查看

    String result = Arrays.stream(name.split("")).collect(Collectors.joining(","));
    

    输出:

    S,t,r,i,n,g
    
  4. # 4 楼答案

    我个人会使用^{}来完成这项任务

    您需要的是应用一些逻辑来区分是否需要逗号。您可以像以前一样循环遍历字符,并且总是在下一个字符之前添加逗号,第一次迭代除外

    例如:

    public static void main(String[] args) {
        String test = "String";
        StringBuilder sb = new StringBuilder();
        for (char ch : test.toCharArray()) {
            if (sb.length() != 0) {
                sb.append(",");
            }
            sb.append(ch);
        }
        System.out.println(sb.toString());
    }
    

    输出:

    S,t,r,i,n,g
    

    另一种方法是不使用StringBuilder,只使用传统的for循环,但使用相同的逻辑:

    public static void main(String[] args) {
        String test = "String";
        char[] chars = test.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (i != 0) {
                System.out.print(",");
            }
            System.out.print(chars[i]);
        }
    }
    

    输出:

    S,t,r,i,n,g
    
  5. # 5 楼答案

    另外加2美分:

    您可以对字符int值进行流式处理,将它们映射到一个List<String>,其中每个元素都是单个char作为String,最后使用String.join(..., ...)以获得所需的结果,原始String中所有字符的String用逗号分隔:

    public static void main(String[] args) {
        // take an example String
        String name = "Stringchars";
        // make a list of characters as String of it by streaming the chars
        List<String> nameCharsAsString = name.chars()
                                            // mapping each one to a String
                                            .mapToObj(e -> String.valueOf((char) e))
                                            // and collect them in a list
                                            .collect(Collectors.toList());
        // then join the elements of that list to a comma separated String
        String nameCharsCommaSeparated = String.join(",", nameCharsAsString);
        // and print it
        System.out.println(nameCharsCommaSeparated);
    }
    

    运行此代码将产生以下输出:

    S,t,r,i,n,g,c,h,a,r,s
    

    这只是得到你想要的结果的另一种可能性,它不一定是最好的解决方案