亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# 檢查字符串是半角還是全角

C# 檢查字符串是半角還是全角

C#
月關寶盒 2023-07-09 15:16:07
使用下面的代碼將日語字符串從全角轉換為半角,但它返回相同的全角字符串而不進行轉換。string?userInput?=?"チヨチヨチチヨチヨチ"; string?result?=?userInput.Normalize(NormalizationForm.FormKC);預期輸出(半角): 實際輸出: 全角然而,即使上面的代碼應該將全角字符串轉換為半角,當我將半角字符串 (??????????) 傳遞給上面的代碼時,它會將其轉換為全角形式 (チヨチヨチチヨチヨチ) 。我在這里做錯了什么?無論如何,如果我的字符串已經是半角,我不希望執行上面的代碼。如何檢查字符串是半角還是全角?
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

標準化方法按預期工作。它必須將字符轉換為標準字符,這樣二進制比較才能正確應用。

但是,如果您想要始終將全角字符轉換為半角字符的自定義轉換,則可以創建一個字典來將全角字符映射到半角字符。

如果您想確保字符串是半角,那么如果它包含任何全角字符,則會被拒絕。創建一個所有全角字符(拉丁文和日文)的字符串,然后在全角字符串中查找要測試字符串的所有字符。

isHalfWidthString為此目的編寫了方法,并添加了全角到半角轉換器方法。我認為這可能會有所幫助:

? public class FullWidthCharactersHandler

? ? {

? ? ? ? static Dictionary<char, char> fullWidth2halfWidthDic;

? ? ? ? static FullWidthCharactersHandler()

? ? ? ? {

? ? ? ? ? ? fullWidth2halfWidthDic = new Dictionary<char, char>();

? ? ? ? ? ? string fullWidthChars = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンッァィゥェォャュョ??ー0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

? ? ? ? ? ? string halfWidthChars = "??????????????????????????????????????????????????????????0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

? ? ? ? ? ? for (int i = 0; i < fullWidthChars.Length; i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? fullWidth2halfWidthDic.Add(fullWidthChars[i], halfWidthChars[i]);

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? public static bool isHalfWidthString(string toTestString)

? ? ? ? {

? ? ? ? ? ? bool isHalfWidth = true;

? ? ? ? ? ? foreach (char ch in toTestString)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (fullWidth2halfWidthDic.ContainsKey(ch))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? isHalfWidth = false;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return isHalfWidth;

? ? ? ? }


? ? ? ? public static string convertFullWidthToHalfWidth(string theString)

? ? ? ? {

? ? ? ? ? ? StringBuilder sbResult = new StringBuilder(theString);

? ? ? ? ? ? for (int i = 0; i < theString.Length; i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (fullWidth2halfWidthDic.ContainsKey(theString[i]))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? sbResult[i] = fullWidth2halfWidthDic[theString[i]];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return sbResult.ToString();

? ? ? ? }

? ? }

查看完整回答
反對 回復 2023-07-09
  • 1 回答
  • 0 關注
  • 353 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號