我有一个旧程序,其中使用了一些库函数,但是我没有那个库。 因此,我正在使用c ++库编写该程序。 在那个旧代码中,有一些这样的函数 * string = newstrdup(“有些字符串在这里”); 字符串变量声明为char ** string; 他在名为“ newst ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我的目标是打印一个新的字符串
char[] result = someArray();
System.out.print(new string(result))
我正在我的任务char[][]
使用 2 维数组。
我想将我的char[][]
数组转换为char[]
如何直接从char[][]
打印单个字符串或轻松将其转换为char[]
?
Arrays.toDeepString()
对我不起作用,因为它以[[a,b,c],[d,e,f]]
格式打印,我正在寻找abcdef
的输出。
2D 字符数组可以使用String(char[])
构造函数为每个“行”字符数组轻松转换为单个字符串,然后连接结果字符串:
static String singleString(char[][] arr) {
return Arrays.stream(arr)
.map(String::new)
.collect(Collectors.joining(""));
}
使用StringBuilder
“Streamless”版本可能如下所示:
static String singleString(char[][] arr) {
StringBuilder sb = new StringBuilder(
arr.length * (arr.length > 0 ? arr[0].length : 0));
for (char[] row : arr) {
sb.append(new String(row));
}
return sb.toString();
}
您可以执行以下操作:
stream
传输一维数组。String::valueOf
将每个数组映射到一个字符串joining
加入一个空的分隔符的字符串。char[][] chs = {{'a','b'},{'c','d','e'}};
String str = Arrays.stream(chs)
.map(String::valueOf)
.collect(Collectors.joining());
System.out.println(str);
版画
abcde
如果要分别打印每个数组,可以执行以下操作:
for (char[] ch : chs) {
System.out.println(Arrays.toString(ch));
}
版画
[a, b]
[c, d, e]
只需根据您要实现的逻辑迭代所有数组并连接行/列。
假设您有以下内容:
[[a] [a] [a]]
[[b] [b] [b]]
[[c] [c] [c]]
迭代第一行,并用“aaa”创建一个新的字符数组,第二个 - “bbb”,第三个 - “ccc”。
[aaa][bbb][ccc]
或者:
char[][] matrix_char = {{'a', 'b'}, {'c', 'd', 'e'}};
String result = Arrays.deepToString(matrix_char).replaceAll("[\\[ ,\\]]", "");
System.out.println(result);
或者直截了当:
char[][] matrix_char = {{'a', 'b'}, {'c', 'd', 'e'}};
StringBuilder result = new StringBuilder();
for (char[] row : matrix_char)
for (char col : row)
result.append(col);
System.out.println(result.toString());
输出:
abcde
您可以将所有这些字符连接成一个字符串,然后将此字符串转换为一维字符数组。 此方法适用于字符代码点,因此它也可以处理不可打印的字符:
char[][] arr2d = {{'a', 'b', 'c'}, {'d'}, {'e', 10, 0}};
char[] arr = Arrays.stream(arr2d)
// concatenate each subarray into one string
.map(String::new)
// join all strings into a single string
.collect(Collectors.joining())
// convert this string to a character array
.toCharArray();
// output
for (char ch : arr) {
// integer codepoint and unicode name of the character
System.out.println(0 + ch + " - " + Character.getName(ch));
}
输出:
97 - LATIN SMALL LETTER A
98 - LATIN SMALL LETTER B
99 - LATIN SMALL LETTER C
100 - LATIN SMALL LETTER D
101 - LATIN SMALL LETTER E
10 - LINE FEED (LF)
0 - NULL
另请参阅:为什么添加字符时会得到一个数字?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.