安全地用c#对多字节字符进行子字符串处理

本文关键字:字符串 处理 字符 多字节 安全 | 更新日期: 2023-09-27 17:57:33

我正在尝试对包含多字节字符的字符串执行子字符串,但没有得到预期的结果。我正在尝试对字符串进行子字符串处理,如😂;测验第一个字符是4字节字符,因此在此字符串上调用ToCharArray会返回:

  • 55357#第一个字符的字节1和2
  • 56384#第一个字符的字节3和4
  • 116#t
  • 101#e
  • 115#
  • 116#t

因此,当我对这个字符串调用.Substring(1)时,它会返回一个无效的字符串,该字符串以第一个字符的第三个和第四个字节开始,而不是"test"。有什么方法可以让.Substring和其他字符串操作将该字符视为一个单元吗?

安全地用c#对多字节字符进行子字符串处理

您想要使用StringInfo

        var yourstring = "  test";
    StringInfo si = new StringInfo(yourstring);
    var substring = si.SubstringByTextElements(1);