- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
C# application on Japanese Windows OS - Present Latin as Full-Width characters
我在上面的链接中引用了接受的答案,并使用下面的代码将日语字符串从全角转换为半角,但它返回相同的全角字符串而不进行转换。
string userInput = "チヨチヨチチヨチヨチ";
string result = userInput.Normalize(NormalizationForm.FormKC);
预期半宽输出:チヨチヨチチヨチヨチ实际输出:チヨチヨチヨチヨチ(全角)
但是,即使上面的代码应该将全角字符串转换为半角,当我将半角字符串 (チヨチヨチチヨチヨチ) 传递给上面的代码时,它会将其转换为全角形式 (チヨチヨチチヨチヨチ).
我在这里做错了什么?
无论如何,如果我的字符串已经是半角,我不希望执行上面的代码。
如何检查一个字符串是半角还是全角?
最佳答案
根据 this 文档,normalize 方法按预期工作。它必须将字符转换为标准字符,以便正确应用二进制比较。
但是如果你想要一个始终将全角转换为半角的自定义转换,你可以创建一个 Dictionary 来将全角字符映射到半角字符。 This link 可能有助于创建此 map 。
如果你想确定字符串是半角的,那么如果它包含任何全角字符,它就会被拒绝。创建一个全角字符(拉丁文和日文)的字符串,然后在全角字符串中找到要测试的字符串的所有字符。
我为此编写了 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();
}
}
测试使用 this link 。
我更新了代码以使用 Dictionary
以获得更好的性能。
关于c# - 在 C# 中检查一个字符串是半角还是全角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142760/
在 posgresSQL 中,我可以搜索不敏感的低/高字符数据 (a/A) 但是数据中有日文字符,我该怎么做。例如在数据中我有 Name = "アアバババ" 如何使用条件名称进行搜索 Name
我正在使用 Java Bufferedwriter 生成 csv 文件。我正在尝试将 zenkaku(全角)数字附加到 csv 文件,但它显示的是 hankaku 而不是 zenkaku。你能建议我如
最近我在 C# 应用程序中看到这段代码。 cDataString = Strings.StrConv(cDataString, VbStrConv.Wide); 据我所知,StrConv 是VB 的字
我有一个 WPF 应用程序,它具有启用了 WindowState="Maximized" 的全屏,但我无法记录 Menu 以显示全屏。我从窗口中删除了 width 属性,但仍然在屏幕的一小部分显示菜单
我需要一种方法来将字符串从标准 ASCII 和 Unicode FULLWIDTH 字符转换为纯 Python 2.6 中的字符串,反之亦然。该字符串还可能包含符号。 我试过 unicodedata.
我是一名优秀的程序员,十分优秀!