假设我们有一些(星光)Unicode字符的字符串:如何从一个字符串获得第n(Unicode)的字符在JavaScript
const s = 'Hi Unicode!'
的[]
运营商和.charAt()
方法不用于获取工作第四字符,这应该是“”:
> s[3]
'�'
> s.charAt(3)
'�'
的.codePointAt()
确实获得第四届字符正确的值,但不幸的是它是一个数,必须转换BA CK为字符串使用String.fromCodePoint()
:
> String.fromCodePoint(s.codePointAt(3))
''
类似地,字符串转换成使用层片阵列产生有效的Unicode字符,所以这是获得第四一个的另一种方式:
> [...s][3]
''
但我可以”不敢相信,从字符串要多少回串,或者是由于到字符串分割成一个数组都在做这种看似琐碎的事情的唯一途径。没有一个简单的方法来做到这一点?
> s.simpleMethod(3)
''
注:我知道,“性格”的定义有些模糊,但对这个问题的目的,字符仅仅是对应于一个Unicode码点(无组合字符符号,没有字形集群,等等)。
更新说明:String.fromCodePoint(str.codePointAt(n))
方法是不是真的可行,因为n
个位置有没有采取以前的星体符号考虑:String.fromCodePoint(''.codePointAt(1)) // => '�'
(我觉得有点哑问这个,就像我可能缺少一些明显的东西,但previous answers对这个问题不适用于星体平面上带有Unicode符号的字符串。)
你见过这个页面的https://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt与一些代码示例? – ivo
@ivo不,我没有看到,有趣!代码示例有一个“固定”版本的charAt,这很有用,但我想知道是否有一种好的方法已经支持语言 – epidemian
它是Javascript。简单的事情不能这么简单:) – jorgonor