我有一个来自 ajax 响应的 UTF-8 编码字符串,我想获取该字符串的子字符串直到第一个逗号。对于字符串"Привет, мир"
,它将是"Привет"
.
这会起作用并且不会遇到“多字节”问题吗?
var i = text.indexOf(',');
if (i != -1) text = text.substr(0, i);
还是更好用split
?
我有一个来自 ajax 响应的 UTF-8 编码字符串,我想获取该字符串的子字符串直到第一个逗号。对于字符串"Привет, мир"
,它将是"Привет"
.
这会起作用并且不会遇到“多字节”问题吗?
var i = text.indexOf(',');
if (i != -1) text = text.substr(0, i);
还是更好用split
?
Javascript 按字符而不是字节来处理字符串。
因此,是的,从编码/字符串处理的角度来看,这很好。
您可以将 Javascript 中的字符串视为没有任何特定编码,而是视为字符串。
> "漢字".substr(1)
"字"
请注意,以上只是一个简化。正如评论中所指出的,Javascript 将字符串视为 16 位代码点。这使您可以“按字符”处理大多数常见字符的字符串,但对于在 UTF-16 中使用超过 2 个字节编码的字符或由多个代码点组成的字符,这种抽象会失效。
UTF-8 仅使用高于 128 的值来编码 ASCII 以外的字符,因此 ASCII 逗号绝不是多字节序列的一部分。