moyong5821401 2015-08-06 09:46 采纳率: 0%
浏览 2311

关于C#切割中文英文混合字符串的问题

下面是我写的一个方法,我的思路是,首先判断一个字符串的字节长度,
“注意我是要按字节长度来切割字符串”,如果大于指定长度,就读取指定长度的
字符串,然后放入 list《string》,然后将这一节字符串切割掉,然后从头开始切割,
但我的方法不完善,希望大神能帮我改一改,
string str="这是一个zifuchuan"我想按6个字节长度切割成
“这是一” ,“个zifu”,“chuan”,
下面是我的方法
private List GetString(string str, int len)
{
string result = string.Empty;
int byteLen = System.Text.Encoding.Default.GetByteCount(str);
int charLen = str.Length;
int byteCount = 0;
int pos = 0;
List srrarr = new List();
if (byteLen > len)
{
for (int i = 0; i < charLen; i++)
{
if (Convert.ToInt32(str.ToCharArray()[i]) > 255)// 按中文字符计算加2
byteCount += 2;
else// 按英文字符计算加1
byteCount += 1;
if (byteCount > len)// 超出时只记下上一个有效位置
{
pos = i;
break;
}
else if (byteCount == len)// 记下当前位置
{
pos = i + 1;
break;
}
}

                if (pos >= 0)
                    result = str.Substring(0, pos);
                srrarr.Add(result);
                str.Replace(result, "");
            }
            else
                result = str;
            srrarr.Add(result);
            str.Replace(result, "");
            return srrarr;
    }
  • 写回答

3条回答 默认 最新

  • Stephen222666 2015-08-06 09:52
    关注

    先把string str="这是一个zifuchuan"转成unicode编码,这样所有字符都是占两个字节的。分割完后在转成多字节编码,这样简单一点。

    评论

报告相同问题?

悬赏问题

  • ¥15 fesafe材料库问题
  • ¥20 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统