C#中一些字符串操作的常用用法
程序员文章站
2022-06-08 23:02:54
c#中一些字符串操作的常用用法 //获得汉字的区位码 byte[]array=newbyte[2]; array=system.text.encoding.defa...
c#中一些字符串操作的常用用法
//获得汉字的区位码
byte[]array=newbyte[2];
array=system.text.encoding.default.getbytes("啊");
inti1=(short)(array[0]-''\0'');
inti2=(short)(array[1]-''\0'');
//unicode解码方式下的汉字码
array=system.text.encoding.unicode.getbytes("啊");
i1=(short)(array[0]-''\0'');
i2=(short)(array[1]-''\0'');
//unicode反解码为汉字
stringstr="4a55";
strings1=str.substring(0,2);
strings2=str.substring(2,2);
intt1=convert.toint32(s1,16);
intt2=convert.toint32(s2,16);
array[0]=(byte)t1;
array[1]=(byte)t2;
strings=system.text.encoding.unicode.getstring(array);
//default方式反解码为汉字
array[0]=(byte)196;
array[1]=(byte)207;
s=system.text.encoding.default.getstring(array);
//取字符串长度
s="iam方枪枪";
intlen=s.length;//willoutputas6
byte[]sarr=system.text.encoding.default.getbytes(s);
len=sarr.length;//willoutputas3+3*2=9
//字符串相加
system.text.stringbuildersb=newsystem.text.stringbuilder("");
sb.append("i");
sb.append("am");
sb.append("方枪枪");
//获取asc码
int asc(string data)
{
byte[] b = system.text.encoding.default.getbytes(data);
int p=0;
if(b.length==1) //如果为英文字符直接返回
return (int)b[0];
for( int i = 0; i < b.length; i++)
{
p = (int)b[ i ];
p = p * 256 + b[ i+1] - 65536;
}
return p;
}
/// <summary>求字符串长度
/// 求字符串长度
/// </summary>
/// <param name="inputstring"></param>
/// <returns></returns>
int len(string inputstring)
{ string s=inputstring;
int len=s.length;//willoutputa s6
byte[]sarr=system.text.encoding.default.getbytes(s);
len=sarr.length;//willoutputa s3+3*2=9
return len;
}
//检测含有中文字符串的实际长度
str为要检测的字符串:
asciiencoding n = new asciiencoding();
byte[] b = n.getbytes(str);
int l = 0; // l 为字符串之实际长度
for (int i=0;i <= b.length-1;i++)
{
if (b[i] ==63) //判断是否为汉字或全脚符号
{
l++;
}
l++;
}
//载字符串修正版(yaosansi)
/// <summary>
/// 截字符串
/// </summary>
/// <param name="inputstring">所要截取的字符串</param>
/// <param name="len">要载得字符串的长度</param>
/// <returns></returns>
public static string cutstring(string inputstring,int len)
{
asciiencoding ascii = new asciiencoding();
int templen=0;
string tempstring="";
byte[] s = ascii.getbytes(inputstring);
for(int i=0;i<s.length-1;i++)
{
if((int)s[i]==63)
{
templen+=2;
}
else
{
templen+=1;
}
try
{
tempstring+=inputstring.substring(i,1);
}
catch
{
break;
}
if(templen>len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte=system.text.encoding.default.getbytes(inputstring);
if(mybyte.length>len)
tempstring+="";
return tempstring;
}
//截取字符串(原稿)
public static string cutstring(string inputstring,int len)
{
asciiencoding ascii = new asciiencoding();
int templen=0;
string tempstring="";
byte[] s = ascii.getbytes(inputstring);
for(int i=0;i<s.length;i++)
{
if((int)s[i]==63)
{
templen+=2;
}
else
{
templen+=1;
}
try
{
tempstring+=inputstring.substring(i,1);
}
catch
{
break;
}
if(templen>len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte=system.text.encoding.default.getbytes(inputstring);
if(mybyte.length>len)
tempstring+="…";
return tempstring;
}
//在c#中截取指定长度的中文字符串
privatestaticstringsubstring(stringstringtosub,intlength){
regexregex=newregex("[\u4e00-\u9fa5]+",regexoptions.compiled);
char[]stringchar=stringtosub.tochararray();
stringbuildersb=newstringbuilder();
intnlength=0;
for(inti=0;i<stringchar.length;i++){
if(regex.ismatch((stringchar[i]).tostring())){
sb.append(stringchar[i]);
nlength+=2;
}
else{
sb.append(stringchar[i]);
nlength=nlength+1;
}
if(nlength>length)
break;
}
returnsb.tostring();
}
/////////////////////////////////////////////////////////////////////
string-->bytearray
byte[]data=syste.text.encoding.ascii.getbytes(string);
string-->byte
bytedata=convert.tobyte(string);
byte[]-->string
stringstring=encoding.ascii.getstring(bytes,0,nbytessize);
//获得汉字的区位码
byte[]array=newbyte[2];
array=system.text.encoding.default.getbytes("啊");
inti1=(short)(array[0]-''\0'');
inti2=(short)(array[1]-''\0'');
//unicode解码方式下的汉字码
array=system.text.encoding.unicode.getbytes("啊");
i1=(short)(array[0]-''\0'');
i2=(short)(array[1]-''\0'');
//unicode反解码为汉字
stringstr="4a55";
strings1=str.substring(0,2);
strings2=str.substring(2,2);
intt1=convert.toint32(s1,16);
intt2=convert.toint32(s2,16);
array[0]=(byte)t1;
array[1]=(byte)t2;
strings=system.text.encoding.unicode.getstring(array);
//default方式反解码为汉字
array[0]=(byte)196;
array[1]=(byte)207;
s=system.text.encoding.default.getstring(array);
//取字符串长度
s="iam方枪枪";
intlen=s.length;//willoutputas6
byte[]sarr=system.text.encoding.default.getbytes(s);
len=sarr.length;//willoutputas3+3*2=9
//字符串相加
system.text.stringbuildersb=newsystem.text.stringbuilder("");
sb.append("i");
sb.append("am");
sb.append("方枪枪");
//获取asc码
int asc(string data)
{
byte[] b = system.text.encoding.default.getbytes(data);
int p=0;
if(b.length==1) //如果为英文字符直接返回
return (int)b[0];
for( int i = 0; i < b.length; i++)
{
p = (int)b[ i ];
p = p * 256 + b[ i+1] - 65536;
}
return p;
}
/// <summary>求字符串长度
/// 求字符串长度
/// </summary>
/// <param name="inputstring"></param>
/// <returns></returns>
int len(string inputstring)
{ string s=inputstring;
int len=s.length;//willoutputa s6
byte[]sarr=system.text.encoding.default.getbytes(s);
len=sarr.length;//willoutputa s3+3*2=9
return len;
}
//检测含有中文字符串的实际长度
str为要检测的字符串:
asciiencoding n = new asciiencoding();
byte[] b = n.getbytes(str);
int l = 0; // l 为字符串之实际长度
for (int i=0;i <= b.length-1;i++)
{
if (b[i] ==63) //判断是否为汉字或全脚符号
{
l++;
}
l++;
}
//载字符串修正版(yaosansi)
/// <summary>
/// 截字符串
/// </summary>
/// <param name="inputstring">所要截取的字符串</param>
/// <param name="len">要载得字符串的长度</param>
/// <returns></returns>
public static string cutstring(string inputstring,int len)
{
asciiencoding ascii = new asciiencoding();
int templen=0;
string tempstring="";
byte[] s = ascii.getbytes(inputstring);
for(int i=0;i<s.length-1;i++)
{
if((int)s[i]==63)
{
templen+=2;
}
else
{
templen+=1;
}
try
{
tempstring+=inputstring.substring(i,1);
}
catch
{
break;
}
if(templen>len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte=system.text.encoding.default.getbytes(inputstring);
if(mybyte.length>len)
tempstring+="";
return tempstring;
}
//截取字符串(原稿)
public static string cutstring(string inputstring,int len)
{
asciiencoding ascii = new asciiencoding();
int templen=0;
string tempstring="";
byte[] s = ascii.getbytes(inputstring);
for(int i=0;i<s.length;i++)
{
if((int)s[i]==63)
{
templen+=2;
}
else
{
templen+=1;
}
try
{
tempstring+=inputstring.substring(i,1);
}
catch
{
break;
}
if(templen>len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte=system.text.encoding.default.getbytes(inputstring);
if(mybyte.length>len)
tempstring+="…";
return tempstring;
}
//在c#中截取指定长度的中文字符串
privatestaticstringsubstring(stringstringtosub,intlength){
regexregex=newregex("[\u4e00-\u9fa5]+",regexoptions.compiled);
char[]stringchar=stringtosub.tochararray();
stringbuildersb=newstringbuilder();
intnlength=0;
for(inti=0;i<stringchar.length;i++){
if(regex.ismatch((stringchar[i]).tostring())){
sb.append(stringchar[i]);
nlength+=2;
}
else{
sb.append(stringchar[i]);
nlength=nlength+1;
}
if(nlength>length)
break;
}
returnsb.tostring();
}
/////////////////////////////////////////////////////////////////////
string-->bytearray
byte[]data=syste.text.encoding.ascii.getbytes(string);
string-->byte
bytedata=convert.tobyte(string);
byte[]-->string
stringstring=encoding.ascii.getstring(bytes,0,nbytessize);
下一篇: 线程的状态与中断