繁体   English   中英

将 char[][] 转换为 char[]

Converting char[][] to char[]

提示:本站收集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的输出。

5 个回复

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();
}

您可以执行以下操作:

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

另请参阅:为什么添加字符时会得到一个数字?

1 将char **转换为char *或char

我有一个旧程序,其中使用了一些库函数,但是我没有那个库。 因此,我正在使用c ++库编写该程序。 在那个旧代码中,有一些这样的函数 * string = newstrdup(“有些字符串在这里”); 字符串变量声明为char ** string; 他在名为“ newst ...

3 将char [] []转换为char **

我有一个char[][] 如何将其转换为char** ? 这里的目标是使用转换后的char**作为main函数的输入,main函数只接受char**作为其输入。 两种C / C ++解决方案都是可以接受的。 ...

4 将char *转换为char **

我很难理解下面的代码: 查看代码,看来这是在尝试创建某种循环链接列表。 但是我不知道这些演员们实际上在做什么。 ...

2012-10-17 04:59:42 1 236   c/ casting
5 将char []转换为char *

可能这是一个棘手的问题,但请帮助 这里如何使用printf(“%s”,cc);打印Hello。 ...

2010-04-19 09:04:44 7 385   c++/ c
6 将 char* 转换为 char [ ]

你好亲爱的互联网 :D 所以我编写了一个“文本到莫尔斯”翻译器,效果很好。 现在我想用 arduino 做同样的事情。 莫尔斯电码应由闪烁的 LED 显示。 我的问题是我有一个const char* morse[]={"....", ".-", ".-..", ".-..", "---"}; 我无 ...

7 从char *转换为char []

我在以下代码中出现分段错误 函数random_string是: 由于某些原因,在使用strcpy时出现分段错误。 逐字节复制也不起作用。 问题是什么? 我没主意。 ...

2013-03-14 12:18:12 6 131   c/ char
8 将char *转换为char []

例: 由于strtok()返回一个char * ,我得到一个没有该转换的类型错误。 有了它,我得到以下内容: 修复此代码的最佳方法是什么? ...

9 将char转换为char数组或将char数组转换为char?

所以,假设我有一个char,我想在一行代码中将它strcat()转换为char数组。 对于[非实际]示例: 或者我想反过来说,无论数据类型如何,连接或类型转换字符串的适当功能是什么? 或者也许有一些我遗漏的语法...... 这是一个例子。 它编译得很好,但崩溃。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM