php如何中判断中文或但有中文标点符号的字符串
答案:2 悬赏:70 手机版
解决时间 2022-01-01 12:41
- 提问者网友:呐年旧曙光
- 2021-12-31 20:05
php如何中判断中文或但有中文标点符号的字符串
最佳答案
- 五星知识达人网友:时间的尘埃
- 2021-12-31 20:26
可以根据中文的ASCII大于127来判断
$num = strlen($str);
for($i=0;$i<$num;$i++){
if(ord(substr($i,$i+1)) > 127){
echo substr($i,$i+2)."为中文";
$i = $i+1;
}
}
$num = strlen($str);
for($i=0;$i<$num;$i++){
if(ord(substr($i,$i+1)) > 127){
echo substr($i,$i+2)."为中文";
$i = $i+1;
}
}
全部回答
- 1楼网友:蕴藏春秋
- 2021-12-31 21:19
直接判断就好了
首先汉字占两位,而且用char数组存的话第一位是负的。
标点符号有全角的也有半角的,后面那种比较简单,直接占1位,前面那种占两位。
遍历字符串,如果当前是那个是正数,直接和半角标点比较,如果是负数,跟全角比较就好了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
bool banjiao(char c){
const char sign[]={",.!?/'\"<>\\:;"};//半角的符号,自己可以添加
for(int i=0;sign[i];i++)
if(sign[i]==c) return true;
return false;
}
bool quanjiao(char *c){ //两位
const char sign[]={",。!?、;:“”‘’"};//全角的符号,自己可以添加
for(int i=0;sign[i];i+=2) //i+=2
if(sign[i]==c[0] && sign[i+1]==c[1])return true;
return false;
}
int main(){
char str[1024];
cin>>str;
int cnt=0;
for(int i=0;str[i];i++){
if(str[i]>=0){
if(banjiao(str[i]))
cnt++;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯