当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中转换为字节时截断字符串?

如何解决《如何在C#中转换为字节时截断字符串?》经验,为你挑选了1个好方法。

我想将一个字符串放入一个字节数组,但字符串可能太大而不适合.在它太大的情况下,我想尽可能多地将字符串放入数组中.有没有一种有效的方法可以找出适合的字符数量?



1> 小智..:

为了将字符串截断为UTF8字节数组而不在字符中间分割,我使用:

static string Truncate(string s, int maxLength) {
    if (Encoding.UTF8.GetByteCount(s) <= maxLength)
        return s;
    var cs = s.ToCharArray();
    int length = 0;
    int i = 0;
    while (i < cs.Length){
        int charSize = 1;
        if (i < (cs.Length - 1) && char.IsSurrogate(cs[i]))
            charSize = 2;
        int byteSize = Encoding.UTF8.GetByteCount(cs, i, charSize);
        if ((byteSize + length) <= maxLength){
            i = i + charSize;
            length += byteSize;
        }
        else
            break;
    }
    return s.Substring(0, i);
}

然后可以将返回的字符串安全地传输到长度为maxLength的字节数组.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有