如何在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()
的答案投了更高的票,因为这更简单。我将把这个答案和评论留给未来的读者,他们不期待任何投票;-)