-
qt 判断字符串中是否含有中文字符_java中判断字符串是否包含中文汉字或字符的方法有哪些...
2020-12-19 02:32:18判断中文字符(包括中文汉字和中文符号)(1)使用中文的编码区间来判断(推荐,效率高)String str1 = "T恤;https://blog.csdn.net/vpqtxzmzezeqjj9977";//中文汉字String str2 = ";...判断中文字符(包括中文汉字和中文符号)
(1)使用中文的编码区间来判断(推荐,效率高)String str1 = "T恤;https://blog.csdn.net/vpqtxzmzezeqjj9977";//中文汉字
String str2 = ";https://blog.csdn.net/vpqtxzmzezeqjj9977";//中文分号
String str3 = "https://blog.csdn.net/vpqtxzmzezeqjj9977";//英文
int flage = 0;
for (char c : str2.toCharArray()) {
if (c >= 0x4E00 && c <= 0x9FA5){
flage = 1;
System.out.println("发现中文字符:"+c);
break; //有一个中文字符就返回
}
}
if(flage!=1){
System.out.println("恭喜,没有发现中文字符!");
}
相关学习视频推荐:java在线学习
(2)使用正则表达式来判断(不推荐,效率低,需要遍历整个字符串)for (int i = 0; i < str1.length(); i++) {
if (str.substring(i, i + 1).matches("[\\u4e00-\\u9fbb]+")) {
flage = 1;
System.out.println("发现中文字符:"+str.substring(i, i + 1));
break; //有一个中文字符就返回
}
}
if(flage!=1){
System.out.println("恭喜,没有发现中文字符!");
}
(3)使用Unicode编码来判断中文标点(推荐)// GENERAL_PUNCTUATION 判断中文的“号
// CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号
// HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号
private static final boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
}
更多相关文章教程可以访问:java开发入门
-
python处理中文的字符编码有哪些_python 处理中文遇到的编码问题总结 以及 字符str的编码如何判断...
2020-11-29 20:08:05为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode ...字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成...为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码
代码中字符串的默认编码与代码文件本身的编码一致。
如:s='中文'
如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件。
如果字符串是这样定义:s=u'中文'
则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可。
如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断:
isinstance(s, unicode) #用来判断是否为unicode
用非unicode编码形式的str来encode会报错
如何获得系统的默认编码?
#!/usr/bin/env python #coding=utf-8 import sys print sys.getdefaultencoding()
该段程序在英文WindowsXP上输出为:ascii
在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。
如在UliPad中运行如下代码:
s=u"中文"print s
会提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。这是因为UliPad在英文WindowsXP上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。
将最后一句改为:print s.encode('gb2312')
则能正确输出“中文”两个字。
若最后一句改为:print s.encode('utf8')
则输出:\xe4\xb8\xad\xe6\x96\x87,这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。
unicode(str,'gb2312')与str.decode('gb2312')是一样的,都是将gb2312编码的str转为unicode编码
使用str.__class__可以查看str的编码形式
原理说了半天,最后来个包治百病的吧:)
#!/usr/bin/env python #coding=utf-8 s="中文" if isinstance(s, unicode): #s=u"中文" print s.encode('gb2312') else: #s="中文" print s.decode('utf-8').encode('gb2312')
-
全角字符到底有哪些
2010-06-22 07:30:12老是有人弄什么一个中文字算两个西文字这种问题,一般而言这种问题是极其愚蠢的。为什么一个中文字要算两个西文字呢? 有些人做前端算宽度(比如显示标题要截掉一些字以免放不下),但是在绝大多数场景下,使用...老是有人弄什么一个中文字算两个西文字这种问题,一般而言这种问题是极其愚蠢的。为什么一个中文字要算两个西文字呢?
有些人做前端算宽度(比如显示标题要截掉一些字以免放不下),但是在绝大多数场景下,使用比例字体的西文的宽度是不等宽的,也不可能是中文字的一半宽。况且除了中文、西文,还有其他文字呢?比如藏文、维吾尔语等,你算一个还是两个?【不要跟我说你只考虑中英文,连少数民族的语言文字都他妈不支持,鸟语倒支持个起劲,还好意思说什么民族团结?】
对于标题截取这种需求,合理的对策是用CSS,对于CSS支持不够的,可以用脚本来计算。简单来说就是把一串字放在一个隐藏容器里量一下,然后截取到指定长度以内。如果用Canvas Text API,更是非常简单的。
另一些人说是要存数据库。但是他妈谁告诉你数据库里保存的时候就是一个中文字对两个西文字?拜托补习一下基本的编码常识。一个汉字对两个英文字母那都是古老的双字节编码了。不说Unicode,GB18030-2005包含70000+字符,显然会有超过双字节的情况。如果你还在用GB2312、GBK,那问题同上,怎么存藏文、维吾尔语等……
抛开这些本身就不合理的需求,但是仍然有少数需求是需要考虑汉字的特殊性的。那就是排版。在排版中,汉字(准确说是中日韩越文字)是直接按照方块字来排的,而其他语言的字符通常要变宽处理。
那么到底哪些字符是方块呢?
如果看看输入法就知道,一直到现在我们都还有全角(Fullwidth)、半角(Halfwidth)的区分。全角就是方块字,而半角则是半个方块字。实际上这是从legacy encoding+早期等宽字体遗留下来的。在Unicode规范里,对东亚字符的这种特殊属性做了更详细的阐述,具体可参考:[url]http://unicode.org/reports/tr11/[/url]。
这里就简单的根据Unicode数据库来给出到底哪些字符是“全角字符”。
1100..115F
11A3..11A7
11FA..11FF
2329,232A
2E80..4DBF (去掉303F)
4E00..A4CF
A960..A97F
AC00..D7FF
F900..FAFF
FE10..FE1F
FE30..FE6F
FF01..FF60
FFE0..FFE7
1F200..3FFFF
以正则表达式来写就是:
/[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329\u232A\u2E80-\u303E\u3040-\u4DBF\u4E00-\uA4CF\uA960-\uA97F\uAC00-\uD7FF\uF900-\uFAFF\uFE10-\uFE1F\uFE30-\uFE6F\uFF01-\uFF60\uFFE0-\uFFE7]/
注意,U+303F虽然是在CJK标点符号区,但是只有它却不是全角的,这个罕用符号表示半个汉字的空间。
另外U+3248到U+324F严格说也不是全角的,在Unicode规范里归为(A)mbiguous类,意思是在特定上下文里(如东亚文本里)可以是全角的,而在其他上下文里则是半角的。A类的字符还有很多,比如双引号、间隔号等,在西文字体里都有这些字符,当然也不可能是按照全角方块字来设计的。
因为实际的字符宽度取决于语言及字体选择等因素,所以我暂时并不直接将A类归入全角。只有U+3248到U+324F在大多数字体里根本都不支持,因此就马虎点按全角算了。 -
GO中字符串常用的系统函数有哪些
2020-07-31 23:27:08在平时字符串的使用频率是非常高的,那么有哪些函数式我们经常要用到的呢,在这里为大家整理以下。 1、统计字符串的长度,len var s string = "hello world" var s2 string = "你好" fmt.Println(len(s))// 11 ...字符串常用系统函数
- 统计字符串的长度,len
- 遍历字符,并处理中文 r := []rune(s)
- 字符串转整数
- 整数转字符串
- 字符串转 []byte
- []byte转字符串
- 十进制转其它进制数字
- 字符串是否包含某子串
- 统计在字符串中出现子串的次数
- 不区分大小写比较
- 子串在母串第一次出现的索引位置(从0开始)
- 子串在母串最后一次出现的位置索引
- 字符串替换 replace
- 字符串切割
- 大小写转换
- 去除左右空格 TrimSpace
- 去除左右两端指定的字符 strings.Trim
- 去除左端指定字符 strings.TrimLeft
- 去除右端指定字符 strings.TrimRight
- 字符串是否已指定字符串开头 strings.HasPrefix
- 字符串是否以指定字符串结尾 strings.HasSuffix
在平时字符串的使用频率是非常高的,那么有哪些函数式我们经常要用到的呢,在这里为大家整理以下。统计字符串的长度,len
var s string = "hello world" var s2 string = "你好" fmt.Println(len(s))// 11 fmt.Println(len(s2))//6 中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8
注意: len是按字节数计算的
遍历字符,并处理中文 r := []rune(s)
var s3 string = "hello 你好" runes := []rune(s3) for i := 0; i < len(runes); i++{ fmt.Printf("字符=%c\n",runes[i]) }
字符串转整数
var s4 string = "123" num, err := strconv.Atoi(s4) if err != nil { panic(err) } fmt.Printf("num type is %T, value = %v\n",num,num) // num type is int, value = 123
整数转字符串
var num1 int = 66 str := strconv.Itoa(num1) fmt.Printf("str type is %T, value = %q\n",str,str) // str type is string, value = "66"
字符串转 []byte
var s5 string = "hello" bytes := []byte(s5) fmt.Printf("bytes = %v ",bytes)
这里把字符转为相对应的ASCII码
[]byte转字符串
s6 := string([]byte{97,98,99}) fmt.Printf("s6 = %v\n",s6) // s6 = abc
十进制转其它进制数字
var num3 int64 = 10 // 想转换成 xx进制,就把第二个参数写成几,例如二进制2,八进制8,十六进制16 formatInt := strconv.FormatInt(num3, 2) fmt.Printf("对应的2进制数字: %v\n",formatInt) // 对应的2进制数字: 1010
字符串是否包含某子串
boo := strings.Contains("hello 你好", "你好") fmt.Printf("是否包含: %v\n",boo)// true
统计在字符串中出现子串的次数
count := strings.Count("hello", "l") fmt.Printf("出现次数: %v\n",count) // 2
如果没有出现返回 0,否则 返回 大于0的数
不区分大小写比较
fmt.Println(strings.EqualFold("abc","Abc")) // true
== 是区分大小写的比较
子串在母串第一次出现的索引位置(从0开始)
没有出现就返回 -1
fmt.Println(strings.Index("first blood","ood")) // 8 fmt.Println(strings.Index("first blood","oodm")) // -1
子串在母串最后一次出现的位置索引
没有则返回 -1
fmt.Println(strings.LastIndex("go golang","go")) // 3 fmt.Println(strings.LastIndex("go golang","gog")) // -1
字符串替换 replace
func Replace(s, old, new string, n int) string
返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。fmt.Println(strings.Replace("hello,world,hello,world","world","go",1)) // hello,go,hello,world fmt.Println(strings.Replace("hello,world,hello,world","world","go",-1)) // hello,go,hello,go
字符串切割
func Split(s, sep string) []string
用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。var s7 string = "hello,world" split := strings.Split(s7, ",") fmt.Println(split) // [hello world]
大小写转换
大写转小写 ToLower
小写转大写 ToUpperfmt.Println(strings.ToLower("GO")) // go fmt.Println(strings.ToUpper("go")) // GO
去除左右空格 TrimSpace
s8 := strings.TrimSpace("hello ") fmt.Printf("%q\n",s8) // "hello"
去除左右两端指定的字符 strings.Trim
func Trim(s string, cutset string) string
返回将s前后端所有cutset包含的utf-8码值都去掉的字符串。s9 := strings.Trim(" ! hello world 123 !", "! ")// 去除左右两端的 空格 和 ! fmt.Printf("s9 = %q\n",s9) //s9 = "hello world 123" s10 := strings.Trim("你好鸭你", "你") fmt.Printf("s10 = %q\n",s10) //s10 = "好鸭"
去除左端指定字符 strings.TrimLeft
s11 := strings.TrimLeft("你好鸭你", "你") fmt.Printf("s11 = %q\n",s11) // s11 = "好鸭你"
去除右端指定字符 strings.TrimRight
s12 := strings.TrimRight("你好鸭你", "你") fmt.Printf("s12 = %q\n",s12) // s12 = "你好鸭"
字符串是否已指定字符串开头 strings.HasPrefix
b := strings.HasPrefix("https://www.baidu.com","https") fmt.Printf("b = %v\n",b) // b = true b2 := strings.HasPrefix("ftp://192.168.0.12","https") fmt.Printf("b2 = %v\n",b2) // b2 = false
字符串是否以指定字符串结尾 strings.HasSuffix
b3 := strings.HasSuffix("main.go","go") fmt.Printf("b3 = %v\n",b3) // b3 = true b4 := strings.HasSuffix("main.java","go") fmt.Printf("b4 = %v\n",b4) // b4 = false
-
mysql 中文本类型有哪些_mysql数据类型有哪些
2021-02-01 19:54:20mysql数据类型有:1、数值类型;...mysql数据类型有:MySQL支持的数据类型在几类:数值类型,日期和时间类型和字符串(字符)类型。数据类型: 注意:在定义字段是我们经常使用 num int(10) unsigned 这种写法... -
mysql 校对规则有哪些_MySQL的字符集和校对规则,你都会了吗?
2021-02-07 19:55:06一、字符集(Character set)是多个字符(英文字符,汉字字符,或者其他国家语言字符)的集合,字符集种类较多,每个字符集包含的字符个数不同。常见字符集:ASCII字符集:基于罗马字母...GBK字符集:支持中文,字符有一... -
Linux centos7 乱码设置中文字符集
2020-06-30 18:19:20locale -a 查看有哪些字符集 utf8的就可以显示中文 yum -y install kde-l10n-Chinese 安装后选个uft8的 ,设置一下全局变量 vi /etc/profile export LANG=en_CA.utf8 =号后面是字符集,这个大家随意 最后让这... -
中文分词分类有哪些小黄鸡中文分词案例分析
2019-09-18 10:11:52字符匹配 这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法... -
linux中,ssh界面中文字符乱码
2012-06-30 17:23:44export LANG=c ...若不清楚当前系统支持哪些中文字符集,可以用“locale -a”查看当前系统支持的中文字符集,见下图: 对linux系统字符集的更改,有两种方式,一种是只针对当前ssh客户端界面有 -
Python 3 JSON 中文字符读写注意事项
2018-04-21 16:17:01这篇文章讲的是如何把 Python 中的 Dict 转化为 ...关键点在于中文字符的处理,这在 Python2 中一度是一个麻烦的问题,到了 Python3 中稍有改善,但还是需要在读写时做出一些设置。这里详细地讲了设置的地方有哪些。 -
python有哪些变量名_python变量名有哪些
2020-12-30 15:55:05Python 需要使用标识符给变量命名,其实标识符就是用于给程序中...此处的字母并不局限于 26 个英文字母,可以包含中文字符、日文字符等。由于 Python 3 支持 UTF-8 字符集,因此 Python 3 的标识符可以使用 UTF-8... -
深入浅出Java中文问题(二)字符,字节和编码
2012-12-03 10:00:18那么,当前比较通用的字符集有哪些呢?它们都有些什么特点?它们之间有什么区别和联系?为什么字符集错位会导致出现中文问题呢?要回答这些问题,我们就要对字符集有一个系统的了解。网络上有一篇文章对此作了系统... -
图文讲解:Qt 4中工程和变量名中不可以使用的符号总结(英文字符共20种,中文字符不可用)-Qt Creator的...
2010-04-08 21:07:00大家知道,在Qt 4中变量的命名是有一定的约束的,中文和某些特殊的字符一般不可以使用,否则将带来难以预料的后果。 对于在变量名中不可以使用中文,我们一般都很清楚了;可是,到底哪些符号不可以用在变量名中呢?... -
Oracle将字符编码从GBK转到UTF8会产生哪些后果,如何操作比较稳妥?
2019-06-21 22:46:57有个学校oracle数据库的编码是GBK,而且库里边已经有很多生产数据了,现在想改成UTF8的,如果执行了这步操作,会出现哪些问题? 我的回答: 因为utf8的库中文占3个byte,gbk占2个byte,所以会出现客户端乱码。 ... -
重音字符和界面语言会对搜索结果产生哪些影响?
2007-08-15 08:47:422007年8月15日 上午 01:27:00发表者 Vanessa Fox 转载自谷歌中文网站管理员博客 原文 How search results may differ based on accented characters and interface languages当搜索用户输入带有重音字符的关键词时,... -
1、css引入的方式有哪些?_中文NER的正确打开方式: 词汇增强方法总结 (从Lattice LSTM到FLAT)...
2021-01-12 15:26:08众所周知,与英文NER相比,中文NER通常采取基于字符的方式。究其缘由,由于中文分词存在误差,基于字符的NER系统通常好于基于词汇(经过分词)的方法。而引入词汇信息(词汇增强)的方法,通常能够有效提升中文NER... -
Python中文编码问题(字符串前面加‘u‘|decode|encode)
2020-11-07 23:37:17有哪些处理方式?附录 1. 前言 我们知道,计算机是以二进制为单位的,也就是说计算机只识别0和1,也就是我们平时在电脑上看到的文字,只有先变成0和1,计算机才会识别它的意思。这种数据和二进制的转换规则就是编码... -
前端如何排除中文字符_推荐几个大厂的前端代码规范,你也能写出诗一样的代码!...
2020-12-01 06:38:58相信很多人都没有逛 GitHub 的习惯,因此总会有开源信息的不对称,有哪些优秀的前端开源项目值得学习的也不知道。初步前端与高级前端之间,最大的差距可能就是信息差造成的。从 2018 年开始,我就养成了每天逛 ... -
字符编码
2019-03-14 18:40:00如果要想去避免这个乱码问题,就必须清楚常见的编码有哪些 GBK GB2312:表示的是国(Guo)标(Biao)编码,GBK包含有简体中文和繁体中文,而GB2312只包含简体中文,也就是说这两个编码都是描述中文的编码; ... -
ORACLE中有哪些数据类型
2014-09-29 10:42:19字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes... -
bootstrap table格式化字符串_php字符串函数汇总
2020-11-24 06:15:10php中文网最新课程每日17点准时技术干货分享php字符串函数有哪些?php字符串函数:addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符addslashes— 使用反斜线引用字符串bin2hex — 函数把包含数据的二进制... -
python有哪些方面_Python学习中最基本的内容,看看有哪些需要我们学习的
2020-12-20 02:07:16本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者...在Windows、Mac、Linux上都可运行简单好用而且功能强大01 中文编码很多同学在打开数据时会遇上乱码问题,其原因是字符集的编码... -
Oracle中有哪些数据类型
2014-12-10 17:08:50字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串... -
9.编码规范:java必须遵守的编码规范有哪些???java中建议遵守的编码规范有哪些???
2020-06-08 13:55:28编码规范 完成:第一遍 1.必须遵守的编码规范有哪些? (1).类名必须与文件名相同,通常...所有命名不建议使用中文、空格、特殊字符等,不要以数字开头 (2).一行只写一条语句 (3).大括号成对写 (4).合理的代码缩进 ... -
一个中文字符占几个字节_女生喜欢上一个人的六种表现 你占几个?网友:太准了...
2020-11-30 19:58:04最近小秋和她的闺蜜们在谈论着高中时代的事情。...那么你知道当一个女孩喜欢上你的时候会有哪些表现吗?小编这里可总结了有六个特征呢?不知道你占了几个?要不要来测试一下?1、找借口联系你其实... -
17年毕业论文注意事项有哪些.doc
2021-01-15 15:43:3717年毕业论文注意事项有哪些 *提供xx年毕业论文注意事项 1、毕业论文一律打印,采取a4纸张,页边距一律采取:上、下2.5cm,左3cm,右1.5cm,行间距取多倍行距(设置值为1.25);字符间距为默认值(缩放100%,间距:标准)... -
mysql中字段有哪些_Mysql中的字段类型
2021-01-19 00:28:18主要有:varchar类型:变长字符串,使用时我们必须设定其长度,最大长度“理论值”65535个,实际其实最大只能是65533个,但考虑到存储的字符编码不同,也会有进一步减少,比如,如果存储中文gbk,则最多是65533/2个...