?? 半角2全角.txt
字號:
/// <summary>
/// 判斷字符是否英文半角字符或標點
/// </summary>
/// <remarks>
/// 32 空格
/// 33-47 標點
/// 48-57 0~9
/// 58-64 標點
/// 65-90 A~Z
/// 91-96 標點
/// 97-122 a~z
/// 123-126 標點
/// </remarks>
public static bool IsBjChar(char c)
{
int i = (int)c;
return i >= 32 && i <= 126;
}
/// <summary>
/// 判斷字符是否全角字符或標點
/// </summary>
/// <remarks>
/// <para>全角字符 - 65248 = 半角字符</para>
/// <para>全角空格例外</para>
/// </remarks>
public static bool IsQjChar(char c)
{
if (c == '\u3000') return true;
int i = (int)c - 65248;
if (i < 32) return false;
return IsBjChar((char)i);
}
/// <summary>
/// 將字符串中的全角字符轉(zhuǎn)換為半角
/// </summary>
public static string ToBj(string s)
{
if (s == null || s.Trim() == string.Empty) return s;
StringBuilder sb = new StringBuilder(s.Length);
for (int i = 0; i < s.Length; i++)
{
if (s[i] == '\u3000')
sb.Append('\u0020');
else if (IsQjChar(s[i]))
sb.Append((char)((int)s[i] - 65248));
else
sb.Append(s[i]);
}
return sb.ToString();
}
2005-9-29 發(fā)現(xiàn)更簡單的方法。
添加 Microsoft Visual Basic.NET Runtime 引用。
Console.WriteLine(Microsoft.VisualBasic.Strings.StrConv("abcdefg", VbStrConv.Narrow, 0));
String Asc2Hz(String s)
{
String hz="";
for (int i=1;i<=s.Length();i++)
{
BYTE c=s[i];
if (c>' ' && c<'~')
hz=hz+String((char)163)+String((char)(128+c));
else if(c==' ')//半角空格轉(zhuǎn)換為全角
hz=hz+String((char)161)+String((char)161);
else
hz=hz+String((char)c);
}
return(hz);
}
String Hz2Asc(String s)
{
String Asc="";
BYTE c1,c2;
for(int i=1;i<=s.Length();i++)
{
c1=s[i];
c2=s[i+1];
if (c1==163)//判斷是否為全角字符
{
Asc=Asc+String((char)(c2-128));
i++;
continue;
}
if (c1>163)//判斷是否為文字
{
Asc=Asc+String((char)c1);
Asc=Asc+String((char)c2);
i++;
continue;
}
if ((c1==161)&&(c2==161))//全角空格是個特例,另加處理
{
Asc=Asc+" ";
i++;
continue;
}
Asc=Asc+String(char(c1));
}
return Asc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit3->Text=Hz2Asc(Edit2->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Edit2->Text=Asc2Hz(Edit1->Text);
}
String AscToHz(String s)
{
String hz="";
for (int i=1;i<=s.Length();i++)
{
BYTE c=s[i];
if(c>' '&&c<='~')
{
hz=hz+String((char)163)+String((char)(128+c));
}
else
{
hz=hz+String((char)c);
}
}
return(hz);
}
//全角變半角
String HzToAsc(String s)
{
String hz="";
for (int i=1;i<=(s.Length()-1);i++)
{
BYTE c=s[i];
if(c==163)
{
hz=hz+String((char)(s[i+1]-128));
i++;
}
else
{
if (c==161)
{
BYTE d=s[i+1];
if (d==161)
{
hz=hz+String(' ');
i++;
}
else
{
hz=hz+String((char)c);
}
}
else
{
hz=hz+String((char)c);
}
}
}
hz=hz+String((char)s[s.Length()]);
return(hz);
}
}
zswang(伴水清清)(專家門診清潔工) 寫的,參考一下吧
void Str2GBReplace(CString &mString)
{
mString.Replace(" ", " ");
mString.Replace("!", "!");
mString.Replace("""", """);
mString.Replace("#", "#");
mString.Replace("$", "$");
mString.Replace("%", "%");
mString.Replace("&", "&");
mString.Replace("'", "'");
mString.Replace("(", "(");
mString.Replace(")", ")");
mString.Replace("*", "*");
mString.Replace("+", "+");
mString.Replace(",", ",");
mString.Replace("-", "-");
mString.Replace(".", "。");
mString.Replace("/", "/");
mString.Replace("0", "0");
mString.Replace("1", "1");
mString.Replace("2", "2");
mString.Replace("3", "3");
mString.Replace("4", "4");
mString.Replace("5", "5");
mString.Replace("6", "6");
mString.Replace("7", "7");
mString.Replace("8", "8");
mString.Replace("9", "9");
mString.Replace(":", ":");
mString.Replace(";", ";");
mString.Replace("<", "<");
mString.Replace("=", "=");
mString.Replace(">", ">");
mString.Replace("?", "?");
mString.Replace("@", "@");
mString.Replace("A", "A");
mString.Replace("B", "B");
mString.Replace("C", "C");
mString.Replace("D", "D");
mString.Replace("E", "E");
mString.Replace("F", "F");
mString.Replace("G", "G");
mString.Replace("H", "H");
mString.Replace("I", "I");
mString.Replace("J", "J");
mString.Replace("K", "K");
mString.Replace("L", "L");
mString.Replace("M", "M");
mString.Replace("N", "N");
mString.Replace("O", "O");
mString.Replace("P", "P");
mString.Replace("Q", "Q");
mString.Replace("R", "R");
mString.Replace("S", "S");
mString.Replace("T", "T");
mString.Replace("U", "U");
mString.Replace("V", "V");
mString.Replace("W", "W");
mString.Replace("X", "X");
mString.Replace("Y", "Y");
mString.Replace("Z", "Z");
mString.Replace("[", "[");
mString.Replace("\\", "\");
mString.Replace("]", "]");
mString.Replace("^", "^");
mString.Replace("_", "_");
mString.Replace("`", "`");
mString.Replace("a", "a");
mString.Replace("b", "b");
mString.Replace("c", "c");
mString.Replace("d", "d");
mString.Replace("e", "e");
mString.Replace("f", "f");
mString.Replace("g", "g");
mString.Replace("h", "h");
mString.Replace("i", "i");
mString.Replace("j", "j");
mString.Replace("k", "k");
mString.Replace("l", "l");
mString.Replace("m", "m");
mString.Replace("n", "n");
mString.Replace("o", "o");
mString.Replace("p", "p");
mString.Replace("q", "q");
mString.Replace("r", "r");
mString.Replace("s", "s");
mString.Replace("t", "t");
mString.Replace("u", "u");
mString.Replace("v", "v");
mString.Replace("w", "w");
mString.Replace("x", "x");
mString.Replace("y", "y");
mString.Replace("z", "z");
mString.Replace("{", "{");
mString.Replace("|", "|");
mString.Replace("}", "}");
mString.Replace("~", "~");
}
/*在Edit1中輸入全角字符、中文、半角字符或混雜輸入。
單擊Button1,Edit1中的文字顯示到Edit2中并轉(zhuǎn)換了所有的全角字符。
注意,程序沒有對特殊字符如255(按住ALT再按小鍵盤的2、5、5輸入)等作出正確反應(yīng)。*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int nLength=Edit1->Text.Length();
if (nLength==0)
return;
AnsiString str="";
char *cTmp=new char[nLength+1];
StrPCopy(cTmp,Edit1->Text);
BYTE c1,c2;
int i;
for (i=0;i<nLength;i++)
{
c1=cTmp[i];
c2=cTmp[i+1];
if (c1==163)//判斷是否為全角字符
{
str=str+AnsiString((char)(c2-128));
i++;
continue;
}
if (c1>163)//判斷是否為文字
{
str=str+AnsiString((char)c1);
str=str+AnsiString((char)c2);
i++;
continue;
}
if ((c1==161) && (c2==161))//全角空格是個特例,另加處理
{
str=str+" ";
i++;
continue;
}
str=str+ AnsiString(char(c1));
}
Edit2->Text=str;
delete cTmp;cTmp=NULL;
}
以上代碼C++Builder5.0/Win98 SE下編譯通過。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -