C#中一些字符串操作的常用用法
//获得汉字的区位码
byte[]array=newbyte[2];
array=System.Text.Encoding.Default.GetBytes("啊");
inti1=(short)(array[0]-'''');
inti2=(short)(array[1]-'''');
//unicode解码方式下的汉字码
array=System.Text.Encoding.Unicode.GetBytes("啊");
i1=(short)(array[0]-'''');
i2=(short)(array[1]-'''');
//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码
intASC(StringData)
{
byte[]b=System.Text.Encoding.Default.GetBytes(Data);
intp=0;
if(b.Length==1)//如果为英文字符直接返回
return(int)b[0];
for(inti=0;i<b.Length;i++)
{
p=(int)b[i];
p=p*256+b[i+1]-65536;
}
returnp;
}
///<summary>求字符串长度
///求字符串长度
///</summary>
///<paramname="inputString"></param>
///<returns></returns>
intlen(StringinputString)
{strings=inputString;
intlen=s.Length;//willoutputas6
byte[]sarr=System.Text.Encoding.Default.GetBytes(s);
len=sarr.Length;//willoutputas3+3*2=9
returnlen;
}
//检测含有中文字符串的实际长度
str为要检测的字符串:
ASCIIEncodingn=newASCIIEncoding();
byte[]b=n.GetBytes(str);
intl=0;//l为字符串之实际长度
for(inti=0;i<=b.Length-1;i++)
{
if(b[i]==63)//判断是否为汉字或全脚符号
{
l++;
}
l++;
}
//载字符串修正版(yaosansi)
///<summary>
///截字符串
///</summary>
///<paramname="inputString">所要截取的字符串</param>
///<paramname="len">要载得字符串的长度</param>
///<returns></returns>
publicstaticstringCutString(stringinputString,intlen)
{
ASCIIEncodingascii=newASCIIEncoding();
inttempLen=0;
stringtempString="";
byte[]s=ascii.GetBytes(inputString);
for(inti=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+="";
returntempString;
}
//截取字符串(原稿)
publicstaticstringCutString(stringinputString,intlen)
{
ASCIIEncodingascii=newASCIIEncoding();
inttempLen=0;
stringtempString="";
byte[]s=ascii.GetBytes(inputString);
for(inti=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+="…";
returntempString;
}
//在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);