转全角半角互相转换(C#,VB.NET)

C#

/**/ ///<summary>
///转全角的函数(SBCcase)
///</summary>
///<paramname="input">任意字符串</param>
///<returns>全角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>

public string ToSBC( string input)
{
//半角转全角:
char[]c=input.ToCharArray();
for(inti=0;i<c.Length;i++)
{
if(c[i]==32)
{
c[i]
=(char)12288;
continue;
}

if(c[i]<127)
c[i]
=(char)(c[i]+65248);
}

returnnewstring(c);
}



/**/ ///<summary>
///转半角的函数(DBCcase)
///</summary>
///<paramname="input">任意字符串</param>
///<returns>半角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>

public string ToDBC( string input)
{
char[]c=input.ToCharArray();
for(inti=0;i<c.Length;i++)
{
if(c[i]==12288)
{
c[i]
=(char)32;
continue;
}

if(c[i]>65280&&c[i]<65375)
c[i]
=(char)(c[i]-65248);
}

returnnewstring(c);
}




VB版本:


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->PublicFunctionToSBC()FunctionToSBC(ByValinputAsString)AsString'转全角
DimcAsChar()=input.ToCharArray
DimiAsInteger=0
Whilei<c.Length
Ifc(i)=ChrW(32)Then
c(i)
=ChrW(12288)
ElseIfAscW(c(i))<127Then
c(i)
=ChrW((AscW(c(i))+65248))
EndIf
System.Math.Min(System.Threading.Interlocked.Increment(i),i
-1)
EndWhile
ReturnNewString(c)
EndFunction



PublicFunctionToDBC()FunctionToDBC(ByValinputAsString)AsString'转半角

DimcAsChar()=input.ToCharArray
DimiAsInteger=0
Whilei<c.Length
IfAscW(c(i))=12288Then
c(i)
=ChrW(32)
ElseIfAscW(c(i))>65280AndAlsoAscW(c(i))<65375Then
c(i)
=ChrW(AscW(c(i))-65248)
EndIf
System.Math.Min(System.Threading.Interlocked.Increment(i),i
-1)
EndWhile
ReturnNewString(c)
EndFunction

你可能感兴趣的:(C++,c,C#,vb,VB.NET)