2022-11-22 ·
编程学习 ·
67363
1.全角:指一个字符占用两个标准字符位置。汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。
2.半角:指一字符占用一个标准的字符位置。通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。
3.全角与半角在计算机中的表示:据我所知,全角的第一个字节是163(我用-93),然后第二个字节与半角相差128。全角空格和半角空格也要考虑进去。
4.C/C++版本:
string ToDBS(string str) {
string result = "";
unsigned char tmp; unsigned char tmp1;
for (unsigned int i = 0; i < str.length(); i++) {
tmp = str[i];
tmp1 = str[i + 1];
cout << "uchar:" << (int) tmp << endl;
if (tmp == 163) {///第一个字节是163,标志着是全角字符
result += (unsigned char) str[i + 1] - 128;
i++;
continue;
} else if (tmp > 163) {//汉字
result += str.substr(i, 2);
i++;
continue;
} else if (tmp == 161 && tmp1 == 161) {///处理全角空格
result += "";
i++;
} else {
result += str.substr(i, 1); } } return result;
}
5.C#版本:
/// <summary>
/// 转全角的函数(SBC case)
/// </summary>
/// <param name="input">任意字符串</param>
/// <returns>全角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToSBC(string input)
{
//半角转全角:
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 32)
{
c[i] = (char)12288;
continue;
}
if (c[i] < 127)
c[i] = (char)(c[i] + 65248);
}
return new string(c);
}
/// <summary>
/// 转半角的函数(DBC case)
/// </summary>
/// <param name="input">任意字符串</param>
/// <returns>半角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToDBC(string input)
{
char[] c = input.ToCharArray();
for (int i = 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);
}
return new string(c);
}
unicodedata.normalize()对全半角无效,因其处理Unicode等价性而非全半角映射;全角数字0(U+FF10)与半角0(U+0030)码位不同、无标准化关系;NFKC转换全角ASCII字符效果不稳定,需用east_asian_width或ord范围显式判断并映射。 全角半角混杂的...
今天遇到一个字符串,怎么匹配空格都不成功!!! 我把空格复制到test.properties文件显示“\u3000”,这是什么?这是全角空格!!! 查了一下 \s 不支持全角 1、"\s"匹配的是哪一种空格? 正则表达式中\s匹配任...
2023-03-02 · 日常教程 · 228893
之前使用trim来移除一段文字开头的空格,移除不掉,发现是全角空格的锅。 便专门添加对全角空格的移除: trim($str," "); 但是效果并不好,因为trim函数对多字节字符串的支持不是很好,这样移除的话容易导致后面的文字出现乱码。 然后在网上找到了一些移除空格的正则表达式,封装成m...
2023-02-17 · 日常教程 · 175054
JAVA中去掉空格 .String.trim() trim()是去掉首尾空格 .str.replace("","");去掉所有空格,包括首尾、中间 Stringstr="hello"; Stringstr2=str.replaceAll("",""); System.out.println(str2...
2023-02-16 · 日常教程 · 213427
一、首先创建一个自定义函数,代码如下: alterfunctionf_convert( @strnvarchar(4000),--要转换的字符串 @flagbit--转换标志,0转换成半角,1转换成全角 ) returnsnvarchar(max) as begin declare@patnvarc...
2023-02-14 · 日常教程 · 166952
 
2022-11-24 · 编程学习 · 82501
在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角"。在汉字输入时,系统提供"半角"和"全角"两种不同的输入状态,但是对于英文字母、符号和数字这些通用字符就不同于汉字,在半角状态它们被作为英文字符处理;而在全角状态,它们又可...
2022-11-22 · 编程学习 · 292860
1. /// <summary>/// 转全角的函数(SBC case)/// </summary>/// <param name="input">任意字符串</param>/// <returns>全角字符串</returns>...
2022-11-22 · 编程学习 · 281879