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。