Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中转换逗号分隔字符中的给定字符串? 公共类StringDemo{ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 String name=“String”; char[]c=name.toCharArray(); 用于(字符ch:c){ 系统输出打印(ch); 系统输出打印(“,”); } } }_Java - Fatal编程技术网

如何在java中转换逗号分隔字符中的给定字符串? 公共类StringDemo{ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 String name=“String”; char[]c=name.toCharArray(); 用于(字符ch:c){ 系统输出打印(ch); 系统输出打印(“,”); } } }

如何在java中转换逗号分隔字符中的给定字符串? 公共类StringDemo{ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 String name=“String”; char[]c=name.toCharArray(); 用于(字符ch:c){ 系统输出打印(ch); 系统输出打印(“,”); } } },java,Java,这给我的输出是 S,t,r,i,n,g, 我不想要最后一个逗号,如何得到输出为S,t,r,I,n,g,我个人会用a来完成这个任务 您需要的是应用一些逻辑来区分是否需要逗号。您可以像以前一样循环遍历字符,并且总是在下一个字符之前添加逗号,第一次迭代除外 例如: public static void main(String[] args) { String test = "String"; StringBuilder sb = new StringBuilder

这给我的输出是

S,t,r,i,n,g,
我不想要最后一个逗号,如何得到输出为S,t,r,I,n,g,我个人会用a来完成这个任务

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

例如:

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
S,t,r,i,n,g
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]);
    }
}

当然,但是对于这一点,您需要一个基于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(",");
    }
}
String name=“String”;
char[]c=name.toCharArray();
for(int i=0;i
您也可以在更高的级别上执行,而无需编写自己的循环。它并没有更快,但代码更清楚地说明了它在做什么:“将我的字符串拆分为多个字符,然后用逗号将其重新连接在一起!”


编辑:
String.join()

您可以对字符
int
值进行流式处理,将它们映射到
列表
,其中每个元素都是单个
char
作为
字符串
,最后使用
字符串。为了获得所需的结果,可以使用逗号分隔原始
字符串中所有字符的
字符串

publicstaticvoidmain(字符串[]args){
//以字符串为例
String name=“Stringchars”;
//通过流式传输字符,将字符列表作为字符串
列表名称CharsString=name.chars()
//将每一个映射到一个字符串
.mapToObj(e->String.valueOf((char)e))
//并将它们收集到一个列表中
.collect(Collectors.toList());
//然后将该列表的元素连接到逗号分隔的字符串
String nameCharsCommaSeparated=String.join(“,”,namecharsastring);
//然后打印出来
System.out.println(nameCharsCommaSeparated);
}
运行此代码将产生以下输出:

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

这只是获得所需结果的另一种可能性,不一定是最佳解决方案。

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

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

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

我觉得这是一个相当大的开销,只是分裂的字符串。它不仅创建了一个中间集合,而且只需执行
name.split(“”),代码的可读性就会大大提高
(返回一个字符串数组,您可以用同样的方式传递给
string.join()
)。是的,您完全正确。实际上,我对使用
String.join()
name.split()
的答案投了更高的票,因为这更简单。我将把这个答案和评论留给未来的读者,他们不期待任何投票;-)