在 Kotlin 中如何将字符串转换为字符串数组?

8

我想知道如何使用Kotlin将一个字符串或字符串对象转换为字符串数组

我进行了一些研究,发现这个Java代码似乎可以实现我需要的功能。

public static void main(String[] args) { 
String word="abc";
        String[] array = new String[word.length()];
        for(int i = 0; i < word.length(); i++)
        {
            array[i] = String.valueOf(word.charAt(i));
        }

        for(String a:array){
            System.out.println(a);
        }
}

我希望在 Kotlin 中获得类似或更好的东西。

谢谢提前。


嗯,这有点复杂。Java示例不正确,因此直接将其翻译成Kotlin也是不正确的。问题在于char不是字符或代码点,而是UTF-16单词,它可以表示代码点的一半。请参见https://dev59.com/s1gR5IYBdhLWcg3ww_ze,并使用内置的IntelliJ J2K转换器。 - Miha_x64
5个回答

12

像这样的内容:

val str = "abcd"
val array: Array<String> = str.toCharArray().map { it.toString() }.toTypedArray()

9
将字符串转换为字符数组的代码可以写为:str.map { it.toString() }.toTypedArray()。该代码将字符串中的每个字符转换为新的字符串,并将结果存储在一个新的字符数组中。 - David Soroko
你也可以将结果分配给一个字符串列表,就像这样:val listStr: List<String> = str.map { it.toString() } - Kenneth Murerwa

8

试试这个:

val str = "Hello"
val arr = str.split("")

fun main() {
    println(arr) // [, H, e, l, l, o]
}

String.split("") 返回一个 List<String>,但问题是关于 Array<String>。 - raianmr
1
您可以追加.toTypedArray()将列表转换为数组。 - francis

5

您可以使用以索引为参数的lambda表达式在初始化数组时填充它。

fun main() {
    val word = "abcd"
    val array = Array(word.length) {word[it].toString()}
    array.forEach { println(it) }
}

1
您可以使用java.text.BreakIterator从Java和Kotlin-JVM中迭代遍历“字形簇”,即用户可见的“字符”。

1
fun main() {
    val string = "Hello"
    val array = Array(string.length) { string[it].toString() }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接