问题描述
- 为难了我很久的编程难题
-
求大家帮忙想想,在visual c++里面对一个给定的中文文本怎么把英语和标点符号过滤掉?
解决方案
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main()
{
string s = "中文123,英文abc...";
string r = "";
const char* c = s.c_str();
for (int i = 0; i < s.length(); i++)
if (c[i] > 256 || c[i] < 0)
r += c[i];
cout << r << endl;
}
解决方案二:
c[i]>256在这里起什么作用?
char的取值不是-128~127么?
解决方案三:
#include <regex>
这个可以去掉
在线编译测试:
http://ideone.com/z2yjD1
中文英文
解决方案四:
直接判断字节值是不是小于 0x80,成立则是英文标点符号,因为中文编译方案中所有字节值都是大于0x7F的
解决方案五:
如果是Unicode编码方案,因为所有符号都用两个字节存储,而且英文符号的第二个字节值 为0,所以按
caozhy 给的代码处理就行。
解决方案六:
需要区分编码格式的,比如是char类型还是wchar_t类型。为此,可以用TCHAR类型,然后遍历字符串中的每一个字符,判断是否处于_T('A')和_T('Z'),以及a~z之间。对于标点符号一样处理。
解决方案七:
用正则表达式可以排除除了汉字和全角标点外的字符
时间: 2024-07-31 11:40:14