在構建全文檢索系統或文本預處理時,常需從混雜文本中提取純中文。本文提供一個 C++ 實現方案,利用字節特徵識別中文字符(GBK/UTF-8 雙字節/三字節編碼),過濾掉英文、數字、標點等非中文內容。
中文字符在 GBK 編碼下佔 2 個字節(高位字節 0x81–0xFE),UTF-8 下佔 3 個字節(以 0xE4–0xE9 開頭)。通過檢查字節值範圍,可判斷是否為中文,從而構建純中文結果字符串。
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "你好,我好。abc,123,aaa...中文英文!";
string r = "";
const char* c = s.c_str();
for (int i = 0; i < s.length(); i++) {
// 簡易判斷 GBK 中文首字節特徵(實際項目建議用 ICU 或 iconv 做編碼轉換)
if ((c[i] & 0x80) != 0) { // 高位為 1,可能是中文
r += c[i];
if (i + 1 < s.length()) r += c[i + 1];
i++; // 跳過第二字節
}
}
cout << r << endl; // 輸出:你好我好中文英文
return 0;
}
此方法適用於輕量級文本清洗,大規模檢索請接入專業分詞組件。