C# 根据字节长度截包含中文的字符串

方法中利用正则表达式判断某个字符是否是中文

public string SubStringB(string text,int length){
  int target=0;
  int b=0;
  for(int i=0;i<text.Length;i++){
    var check=Regex.IsMatch(text[i].ToString(),@"[\u4e00-\u9fbb]$");
    var temp=check?2:1;
    if(b+temp>length){
      target=i;
      break;
    }
    else{
      b=b+temp;
    }
  }
  if(target==0){
    target=text.Length;
  }
  var result=text.Substring(0,target);
  return result;
}

时间: 2025-01-06 19:47:01

C# 根据字节长度截包含中文的字符串的相关文章

vb.net中,如何把byte array还原成为包含中文的字符串

这个问题,在网上好找了半天,但说实在话,不得不说,现在的程序员,脑子都僵化了. 一个能解决的也没有. 这还不说,多数人指出应当两边都用UNICODE,不要用ASC 2码之类的.我想说,这些是人家问的吗?不懂就是不懂,要是我就这样,何必不懂还要瞎JB指挥? 但我要说,这正是知其然不知其所以然,正确的回答,永远是先解释完提出问题的人,然后解决之. 然后,如果你愿意画蛇添足,再加上自己的想法.不想多说了,正确的代码我放在这里: '====================================

python编码处理:unicode字节串转成中文 各种字符串举例说明

编码问题一直是很头痛的问题: 当字符串是:'\u4e2d\u56fd' >>>s=['\u4e2d\u56fd','\u6e05\u534e\u5927\u5b66']>>>str=s[0].decode('unicode_escape')  #.encode("EUC_KR")>>>print str 中国 当字符串是:' 东亚学团一中' >>>print unichr(19996) 东 ord()支持unico

包含中文的字符串中截取前N个字符

package com.wangzhu.string; import java.io.UnsupportedEncodingException; public class SubStringDemo1 { public static void main(String[] args) throws UnsupportedEncodingException { String str = "我是j好abc"; String charset = "UTF-8"; print

截取字节数组形式的字符串,串中包含中文

描述 1.首先说一下各种字符的字节组成: 字符.字母和数字:由一个大于0的数字码组成,比如1--49.A--65.b--98.即这三种类型长度为1字节. 汉字:由两个小于0的数字码组成,比如 "我"-- (-50,-46)."们"--(-61,-57).即中文长度为2字节. 2.解释一下题干 输入是一个包含中文的字符串str,和一个截取长度i,要求把str截取i个字符长度输出,但是如果末尾是半个中文,就舍弃掉.因为除了汉字以外的其他都是1字节长度,所以本题难度是处理

一个包含中英文的字符串如何获得它的自然长度

$str = 'Hello world!'; echo strlen($str); // 输出12 然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的.在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节. $str = '你好,世界!'; echo strlen($str); // GBK或GB2312下输出12,UTF-8下输出18 而我们在判断字符串长度时往往需要判断

Java String类型数据的字节长度

问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校验,如果数据是纯英文,没有问题,但是如果数据中包含中文,校验可以通过,但是在数据入库时经常会报数据超长. 问题分析: 既然问题是数据超长,那么问题应该就是出在数据长度校验上,也就是出在String.length()这个方法上,来看看JDK是如何描述这个方法的: [plain] view plain copy length public int

ORACLE判别字段是否包含中文

在ORACLE数据库中如何查找那些字段里面包含中文的数据记录呢,有时候就是有这样的特殊需求,下面整理了一些判别字段中包含中文记录的几个方法 1:使用ASCIISTR函数判别 ASCIISTR函数说明: ASCIISTR返回字符的ASCII形式的字符串.非ASCII的字符被转化为\xxxx的形式. 使用ASCIISTR函数也是根据非ASCII字符会被转化这个特性来判别中文字符,只要里面包含中文字符,则必定会有\xxx这样的字符.且简体汉字的编码范围是B0A1 - F7FE.如下例子所示 CREAT

求一个字符串的字节长度

编写一个方法 求一个字符串的字节长度 假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var bytes = len; for(var i=0; i<len; i++){ if (str.charCodeAt(i) > 255) bytes++; } return bytes; } alert(GetBytes("你好,as"));

计算字节长度

<!doctype html><html><head><meta charset="utf-8"><meta name="author" /><meta name="copyright" /><title>计算字节长度</title><script> var str = "abc中文"; // 4e00 - 9fa5 a