⑴ c++中如何判斷字元是全形還是半形
其他字元半形(33-126)與全形(65281-65374)的對應關系是:均相差65248
if(
ch&128)
用這個可以判斷
⑵ 求正則表達式,要求:匹配所有的半形數字和英文字元,替換成全形數字和全形英文字元,先謝謝了
正則表達式並不是處理此問題的最佳途徑。
下面是一段根據utf編碼表轉換的示例代碼:
public static String convertSBC2DBC(String s)
{
if(s==null||s.length()==0) return s;
StringBuilder sb=new StringBuilder(s);
final int offset=0xff00-0x20;
for(int i=0;i<sb.length();i++)
{
char val=sb.charAt(i);
if(val==0x3000) {
val=0x20;
continue;
}
if(isSBC(val)){
val-=offset;
sb.setCharAt(i, val);
}
}
return sb.toString();
}
public static boolean isSBC(char ch)
{
if(ch==0x3000) return true;//特殊處理空格
return ch>0xff00&&ch<0xff5f;
}
public static void main(String[] args) {
System.out.println(convertSBC2DBC("Abcdefgh129847"));
}
⑶ C語言編程中分好還有雙引號之類的是全形字元還是半形的啊
所有的都是半形字元,也就是一般用英文輸入時使用的。
全形字元一般都是中文才用的,老外完全搞不懂的。
⑷ shell或標准C/C++處理繁體字、全形等字元
撒的
⑸ 怎樣將字元串中的全形和半形字元區分出來
char c = 'a';
if(c>=33 & c<=126)
{
半形
}
else if(c>=65281& c<=65374)
{
全形
}
else
{
其它
}
⑹ C++如何實現給字元串中的指定元素賦值全形字元
直接使用getline函數進行獲取字元串,設置結束標識為'\n'即可
string a;getline(cin, a, '\n');cout << a;
⑺ 求教:HttpServlet過濾全形字元
取每行數據,用indexOf() 方法判斷字元串是否 Define Class開頭,然後以空格符作為分隔符把字元串用 split()方法分割成數組, 返回一個串數組,那下標為2的數組就是你要的東西
⑻ C語言求解 關於全形符號與半形符號的篩選 以及二進制打開文本
統計字元、那個你用ASCLL碼的段位做、就是一個簡單的if語句
if(……)//判斷是否在那個ASCLL碼段位
{
count1++;
printf("……");//輸出
}
類似的兩個if放在循環內就解決了
⑼ 計算機怎樣識別半形和全形字元混雜的字元串
編碼不同
比如,在相同編碼下,on的是006f 006e , 而潮應該是 6f6e
在不支持漢字的編碼下,是讀不出來漢字的,如ASCII編碼無法表示漢字。所以ASCII不需要區分這個。
⑽ 急求!!!用C語言編程,統計一個文本文件中半形字元的個數和全形字元的個數。 萬分感謝!!!
#include<stdio.h>
#include<string.h>
void main()
{
unsigned char half[256]={0},all[256][3]={0},c; /* 不考慮中文 */
char str[500];
int halfdata[256]={0},alldata[256]={0};
int i,len;
FILE *fp;
if((fp=fopen("test.txt","rt"))==NULL)
{
printf("cannot open file\n");
return;
}
while (fgets(str,500,fp))
{
len=strlen(str);
for(i=0;i<len-1;i++)
{
if((str[i]&0x80)==0)
{
half[str[i]]=str[i];
halfdata[str[i]]++;
}
else if((str[i+1]&0x80)>0)
{
c=str[i+1];
all[c][0]=str[i]; /* 全形字元的第一個位元組總是被置為163 */
all[c][1]=str[i+1];
alldata[c]++; /* 根據第二個位元組進行區分 */
i++;
}
}
}
fclose(fp);
for(i=0;i<256;i++)
{
if(halfdata[i]>0)
printf("%d %c\n",halfdata[i],half[i]);
if(alldata[i]>0)
printf("%d %s\n",alldata[i],all[i]);
}
}