[英]Split a UTF-8 encoded string on blank characters without knowing about UTF-8 encoding
我想在每个空白字符('','\\ n','\\ r','\\ t','\\ v','\\ f')分割一个字符串。字符串以UTF8编码存储在一个字节中array(例如char *,或vector或string)
我可以在每个分裂字符处拆分字节数组吗? 换句话说,我确定在多字节字符中找不到与这些字符对应的字节值? 通过查看UTF-8规范,似乎所有多字节字符只有大于128的字节。
谢谢
是的你可以。
多字节序列必须包括一个前导字节(两个MSB等于11
)和一个或多个连续字节(两个MSB等于10
)。 多字节序列(前导字节+连续字节)的总长度等于前导字节中等于1的MSB的计数,在第一个位0出现之前(例如:如果前导字节是110xxxxx
,恰好是一个连续字节应该遵循;如果是11110xxx
,应该有正好三个连续字节)。
因此,如果你发现短MB序列或没有前导字节的stray continuationb字节,你的字符串无论如何都可能是无效的,你拆分程序可能不会比它可能已经进行的任何更进一步。
但是您可能需要注意一些事项:Unicode在上部非ASCII兼容范围中引入了其他“空白”符号。 您可能希望相应地对待它们。
如果你将自己限制在你提到的空白字符集中,那么答案肯定是“是”。
当然,总是存在一个问题,即首先检查您的文本是否是有效的UTF-8 ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.