1 回答

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();
}
}
- 1 回答
- 0 关注
- 293 浏览
添加回答
举报