1

例如我有一个字符串,我希望找到一个简单的方法来获取一个子字符串,它以utf-8编码,并且子字符串的repr的长度是<= N,当然我可以尝试N / 3个子字符串并增加N/3+1, N/3+2,...,但是有没有简单的方法呢?

word = u"this is a ship, and some other words".encode("utf-8")
#some way got a substring
substring = func(word, N)
#assert len(repr(substring)) <= N

谢谢!

4

1 回答 1

1

一种可能的方法:

  1. 取整个字符串 repr 的前 N-1 个字节。
  2. 检查最后 3 个字节以查看是否破坏了转义序列并在必要时截断字节
  3. 附加一个报价,记住它可能是'"
  4. 将 repr 评估回 utf-8。
  5. 检查最后几个字节,看看您是否在 Unicode 代码点中间破坏了字符串,并在必要时删除字节。您可以通过检查位模式来区分前导字节和连续字节。
于 2013-04-29T07:14:47.620 回答