Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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 将带有表情符号的字符串映射到数组_Java_Android_Arrays_String_Kotlin - Fatal编程技术网

Java 将带有表情符号的字符串映射到数组

Java 将带有表情符号的字符串映射到数组,java,android,arrays,string,kotlin,Java,Android,Arrays,String,Kotlin,我想将字符串转换为数组或字符串列表或字符,如:数组或数组 例如: val myText = "AbIn Java, you can get a stream of the string's code points, and convert each of them back into a string: var myText = "AbIn Kotlin, if targeting JDK 8 or later you can use: fun String.splitToC

我想将字符串转换为数组或字符串列表或字符,如:数组或数组

例如:

val myText = "AbIn Java, you can get a stream of the string's code points, and convert each of them back into a string:

var myText = "AbIn Kotlin, if targeting JDK 8 or later you can use:

fun String.splitToCodePoints(): List<String> {
    return codePoints()
        .toList()
        .map { String(Character.toChars(it)) }
}

val myText=Ab在Java中,您可以获取字符串的代码点流,并将每个代码点转换回字符串:


var myText=Ab在Java中,您可以获取字符串的代码点流,并将每个代码点转换回字符串:


var myText=Ab在Kotlin中,如果目标是JDK 8或更高版本,则可以使用:

fun String.splitToCodePoints:列表{ 返回码点 托利斯先生 .map{StringCharacter.toCharsit} } 如果使用JDK 7,则更为手动:

fun String.splitToCodePoints:列表{ val list=mutableListOf 变量计数=0 而计数<长度{ 使用codePointAtcount{ list.addStringCharacter.toCharsthis count+=Character.charCountthis } } 返回列表 } Kotlin标准库似乎在这些方面有所欠缺,因为您必须依赖JDK装箱的基本类将代码点整数转换为字符串


正如在这里的另一个答案中所提到的,如果您需要处理零宽度接合器,那么这将需要更多的参与。您可能需要删除任何零宽度连接符,以便可以单独显示字符,或者您可能希望将它们显示在一起,因此需要操纵列表以合并由连接符分隔的元素。如果语言使用连字,这将影响此决定。

在Kotlin中,如果目标是JDK 8或更高版本,则可以使用:

fun String.splitToCodePoints:列表{ 返回码点 托利斯先生 .map{StringCharacter.toCharsit} } 如果使用JDK 7,则更为手动:

fun String.splitToCodePoints:列表{ val list=mutableListOf 变量计数=0 而计数<长度{ 使用codePointAtcount{ list.addStringCharacter.toCharsthis count+=Character.charCountthis } } 返回列表 } Kotlin标准库似乎在这些方面有所欠缺,因为您必须依赖JDK装箱的基本类将代码点整数转换为字符串


正如在这里的另一个答案中所提到的,如果您需要处理零宽度接合器,那么这将需要更多的参与。您可能需要删除任何零宽度连接符,以便可以单独显示字符,或者您可能希望将它们显示在一起,因此需要操纵列表以合并由连接符分隔的元素。如果语言使用连字,这将影响此决定。

谢谢你的答案很好,但它需要API级别24我的版本是21谢谢你的答案很好,但它需要API级别24我的版本是21。要正确处理表情符号,请注意,这不仅仅是表情符号问题,甚至字母也可以由组合字符组成。从Java 9开始,您可以使用array.asListmyText.split\\b{g}或Pattern.compile\\X.matchermyText.results.mapMatchResult::group.collectCollectors.toList。要正确处理表情符号,您需要注意的是,这不仅仅是表情符号问题,甚至字母也可能由组合字符组成。从Java 9开始,可以使用Arrays.asListmyText.split\\b{g}或Pattern.compile\\X.matchermyText.results.mapMatchResult::group.collectCollectors.toList。