1. 程式人生 > >過濾CString字串中各位是數字,大小寫字母,符號,漢字

過濾CString字串中各位是數字,大小寫字母,符號,漢字

UNICODE編碼下(萬國碼、國際碼、統一碼、單一碼,雙位元組字符集編碼)

UINT GetCharacterType (CString str = _T("")) {
	UINT iType = 0; // 字串的型別
	UINT iLen  = 0; // 檢視字串strDemo的長度
	CString strDemo = L"0123abcABC_雲中鶴+-*ほニホ呵呵00";
	if (str.GetLength()>0)
	{
		strDemo = str;
	}
	
	CString shuzi = _T ("");
	CString biaodianfuhao = _T ("");
	CString hanzi = _T ("");
	CString daxiezimu = _T ("");
	CString xiaoxiezimu = _T ("");


	for(; iLen < strDemo.GetLength (); iLen++) {
		int unicode = (int) strDemo.GetAt (iLen);
		if(unicode <= 0x39 && unicode >= 0x30) {
			shuzi += strDemo.GetAt (iLen);
		} else if(unicode <= 0x7A && unicode >= 0x61) {
			xiaoxiezimu += strDemo.GetAt (iLen);
		} else if(unicode <= 0x5A && unicode >= 0x41) {
			daxiezimu += strDemo.GetAt (iLen);
		} else if(unicode > 0xFF) { // 255
			hanzi += strDemo.GetAt (iLen);
		} else {
			biaodianfuhao += strDemo.GetAt (iLen);
		}
	}
	if(shuzi.GetLength () > 0) {
		iType |= 0x000001;
	}
	if(biaodianfuhao.GetLength () > 0) {
		iType |= 0x000010;
	}
	if(hanzi.GetLength () > 0) {
		iType |= 0x000100;
	}
	if(daxiezimu.GetLength () > 0) {
		iType |= 0x001000;
	}
	if(xiaoxiezimu.GetLength () > 0) {
		iType |= 0x010000;
	}
	return iType;
}

void Test () {
	GetCharacterType ();
}

MBCS編碼下(Multi-byte character set多位元組字符集編碼)

UINT GetCharacterType (CString str = _T ("")) {
	UINT iType = 0; // 字串的型別
	UINT iLen = 0; // 檢視字串strDemo的長度
	CString strDemo = "0123abcABC_雲中鶴+-*ほニホ呵呵00";
	if(str.GetLength () > 0) {
		strDemo = str;
	}
	UINT lens;
	lens = (int) strlen (strDemo);

	unsigned char hanzi[20];         // Chinese characters;Japanese characters
	unsigned char daxiezimu[20];     // upper case letter
	unsigned char xiaoxiezimu[20];   // lower case letter
	unsigned char shuzi[20];         // number
	unsigned char biaodianfuhao[20]; // Expression symbol

	unsigned char ansi;
	int hanzi_len = 0; 
	int daxiezimu_len = 0;
	int xiaoxiezimu_len = 0;
	int shuzi_len = 0;
	int biaodianfuhao_len = 0;

	for(; iLen < lens; iLen++) {
		ansi = strDemo[iLen];
		if(ansi <= 0x39 && ansi >= 0x30) {
			shuzi[shuzi_len++] = ansi;
		} else if(ansi <= 0x7A && ansi >= 0x61) {
			xiaoxiezimu[xiaoxiezimu_len++] = ansi;
		} else if(ansi <= 0x5A && ansi >= 0x41) {
			daxiezimu[daxiezimu_len++] = ansi;
		} else if(ansi > 0x7F) { // 127
			hanzi[hanzi_len++] = ansi;
			hanzi[hanzi_len++] = strDemo[++iLen];
		} else {
			biaodianfuhao[biaodianfuhao_len++] = ansi;
		}
		
	}
	shuzi[shuzi_len] = (BYTE)"\0";
	daxiezimu[daxiezimu_len] = (BYTE)"\0";
	xiaoxiezimu[xiaoxiezimu_len] = (BYTE)"\0";
	biaodianfuhao[biaodianfuhao_len] = (BYTE)"\0";
	hanzi[hanzi_len] = (BYTE)"\0";
	
	if(strlen((const char*) shuzi) > 0) {
		iType |= 0x000001;
	}
	if(strlen ((const char*) biaodianfuhao) > 0) {
		iType |= 0x000010;
	}
	if(strlen ((const char*) hanzi) > 0) {
		iType |= 0x000100;
	}
	if(strlen ((const char*) daxiezimu) > 0) {
		iType |= 0x001000;
	}
	if(strlen ((const char*) xiaoxiezimu) > 0) {
		iType |= 0x010000;
	}

	return iType;

}

void Test () {
	GetCharacterType ();
}

多位元組字符集除錯資訊


ASCII標準表

Bin(二進位制) Oct(八進位制) Dec(十進位制) Hex(十六進位制) 縮寫/字元 解釋
0000 0000 0 0 00 NUL(null) 空字元
0000 0001 1 1 01 SOH(start of headline) 標題開始
0000 0010 2 2 02 STX (start of text) 正文開始
0000 0011 3 3 03 ETX (end of text) 正文結束
0000 0100 4 4 04 EOT (end of transmission) 傳輸結束
0000 0101 5 5 05 ENQ (enquiry) 請求
0000 0110 6 6 06 ACK (acknowledge) 收到通知
0000 0111 7 7 07 BEL (bell) 響鈴
0000 1000 10 8 08 BS (backspace) 退格
0000 1001 11 9 09 HT (horizontal tab) 水平製表符
0000 1010 12 10 0A LF (NL line feed, new line) 換行鍵
0000 1011 13 11 0B VT (vertical tab) 垂直製表符
0000 1100 14 12 0C FF (NP form feed, new page) 換頁鍵
0000 1101 15 13 0D CR (carriage return) 回車鍵
0000 1110 16 14 0E SO (shift out) 不用切換
0000 1111 17 15 0F SI (shift in) 啟用切換
0001 0000 20 16 10 DLE (data link escape) 資料鏈路轉義
0001 0001 21 17 11 DC1 (device control 1) 裝置控制1
0001 0010 22 18 12 DC2 (device control 2) 裝置控制2
0001 0011 23 19 13 DC3 (device control 3) 裝置控制3
0001 0100 24 20 14 DC4 (device control 4) 裝置控制4
0001 0101 25 21 15 NAK (negative acknowledge) 拒絕接收
0001 0110 26 22 16 SYN (synchronous idle) 同步空閒
0001 0111 27 23 17 ETB (end of trans. block) 結束傳輸塊
0001 1000 30 24 18 CAN (cancel) 取消
0001 1001 31 25 19 EM (end of medium) 媒介結束
0001 1010 32 26 1A SUB (substitute) 代替
0001 1011 33 27 1B ESC (escape) 換碼(溢位)
0001 1100 34 28 1C FS (file separator) 檔案分隔符
0001 1101 35 29 1D GS (group separator) 分組符
0001 1110 36 30 1E RS (record separator) 記錄分隔符
0001 1111 37 31 1F US (unit separator) 單元分隔符
0010 0000 40 32 20 (space) 空格
0010 0001 41 33 21 ! 歎號
0010 0010 42 34 22

相關推薦

過濾CString字串各位數字大小寫字母符號漢字

UNICODE編碼下(萬國碼、國際碼、統一碼、單一碼,雙位元組字符集編碼) UINT GetCharacterType (CString str = _T("")) { UINT iType = 0; // 字串的型別 UINT iLen = 0; // 檢視

華為面試題:請編寫一個字串壓縮程式字串連續出席的重複字母進行壓縮並輸出壓縮後的字串

#include<iostream> #include<stdio.h> #include<cstring> using namespace std; //void stringZip(const char *pInputStr, long lInputLen, char

CString字串數字的提取

假設CString型別的字串“192.168.1.1” void main() {  CString str = "192.168.1.1";  int a,b,c,d;  int pos;  pos = str.Find('.');  CStr

給出字串分別計算出字串數字大小寫字母的個數。(兩種方法 getBytes( ) charAt( ) )

public class LetterAndNumberCount { public static void main(String[] args) { Count("FJJgjsgfsd543632"); count1("SFsefgdg2354354fsdf"

Python 計算字串所有數字的和如:'12abc34de5f' => 12 + 34 + 5 => 51

Python 計算字串中所有數字的和,如:‘12abc34de5f’ => 12 + 34 + 5 => 51 解題思路: 可以把不是數字的元素轉換成’ '空格, 然後按空格切割成列表, 把列表中的數字元素找出相加 最後返回 s = '12abc34de5f' def sum

Python練習題2:提取列表的所有數字包括字串數字 target = ['25',5,'a',1,2,'b',4,5,'A','python','3.6']

方法一:使用type(eval())函式判斷型別,再用try-except-else處理異常 1 def num_trans(): 2 """使用eval()函式判斷""" 3 target = ['25',5,'a',1,2,'b',4,5,'A','python','3.6'

#計算字串所有數字連續當一個數字 (正則表示式,能不用就不用)

s='12as3d6f20ads01sd02' import re def he(s): c=re.compile('\d+')#建立正則表示式 l=c.findall(s)#返回所有匹配結果的列表 sum=0 #和 for i in l: #遍歷

如何從CString型別的字串取出數字

LRESULT CMainDlg::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/){// TODO: Add validation code CString strDate ="abcd

判斷字串數字是否相同連續

最近幾天在寫pin code和指紋登入功能,一直沒有時間總結技術,今天終於有點時間了。 我們的pin code的規則如下圖所示: 先說一下我對這個問題的解決思路: 我們先進行判重,怎麼進行判重呢,首先我們需要把字串中的數字切割成單獨的數字,放入到陣列中,

MySQL:字串數字、英文字元、漢字提取

原文:https://blog.csdn.net/oyezhou/article/details/81665643 另外一篇類似的:https://blog.csdn.net/haijiege/article/details/79460236 建立一個Num_char_

解決 Order By 將字串型別的數字字串數字數字排序問題

oracle資料庫,欄位是varchar2型別即string,而其實存的是數字,這時候不加處理的order by的排序結果,肯定有問題   解決辦法:           &

輸入字符串包含數字大小寫字母編程輸出出現做多的數字的和

數字 字母 十進制數 println code key generated 分離 其他 題目描述: 輸入字符串,包含數字,大小寫字母,編程輸出出現做多的數字的和。 思路: 1.創建輸入對象2.輸入字符串3.利用正則將字母分離出,剩余的每一個字符串即為待統計的每一個數字

PHP去掉字串數字

這個比較簡單,但是也有些需要注意的地方,先貼程式碼 $class=preg_replace("\\d+",'', $res); 需要使用preg_replace函式,但是隻是這麼寫的話,會報錯 Warning: preg_replace(): Delimiter must not be

python提取字串數字

字串儲存在string.txt中,將字串中的數字提取出來,組成心得字串,並列印輸出。 #!/usr/bin/env python3 file=open('/home/user/string.txt') file_context=file.read() i=0 string='' wh

字串數字轉化為文字

String ids = "1,2,3"; String[] industryIdsArr = ids.split(","); String str = ""; if (industryIdsArr != null && industryIdsArr.length

Java字串數字進行求和運算

字串中的數字進行求和    1 public class StringDemo { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5

Python 提取字串數字

方法*正則表示式. re.findall >>> import re >>> str1="this book is 99 yuan 8" >>> a=re.findall(r'\d',str1) #在字串中找到正則表示式所匹配的所

請實現一個函式將一個字串的每個空格替換成指定符號

題目描述 請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 /* 思路:從前向後記錄‘ ’數目,從後向前替換‘ ’。 重點:從後向前替換的時候的技巧 例如:“we are lucky”

shell正則提取字串數字並儲存到變數

1.提取數字到變數 temp = `echo "helloworld20181212 | tr -cd "[0-9]""` echo ${temp} 2.釋義tr -cd "[0-9]"     tr是translate的縮寫,主要用於刪除檔案中的控制字元,或者進行字元轉換 &n

java 劍指offer 第二題:請實現一個函式將一個字串的空格替換成“%20”。例如字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。

** public class Solution { public String replaceSpace(StringBuffer str) { 首先程式給出的引數是StringBuffer類,那麼我首先考慮的是就呼叫StringBuffer類的相關方法完成操作。