Julia : 中文字符串的取值 UnicodeError 及解决方案
在Julia中,对于Unicode字符串的取值,可能不小心就是一个坑。
感谢@Gnimuc ,提供以下链接,可以做为参考。
http://stackoverflow.com/questions/39501900/truncate-string-in-julia
一、问题及提出
julia> strs ="#我是中国人"
"#我是中国人"julia> strs[1:1]
"#"julia> strs[2:2]
"我"julia> strs[3:3]
ERROR: UnicodeError: invalid character indexin getindex(::String, ::UnitRange{Int64}) at .\strings\string.jl:130julia> strs[4:4]
ERROR: UnicodeError: invalid character indexin getindex(::String, ::UnitRange{Int64}) at .\strings\string.jl:130julia> length(strs)
6
二、思路
如果取到类似strs[3:3]的值,有什么办法? 先由字符串=>字符数组…….?
julia> data =collect(take(strs,length(strs)))
6-element Array{Char,1}:'#''我''是''中''国''人'
julia> data2= Vector{Char}(strs) # 这是一种替代的方式
6-element Array{Char,1}:'#''我''是''中''国''人'julia> str =string(data[2:4])
"['我','是','中']"julia> str =string(data[4])
"中"julia> str =String(data[2:4]) # 建议方案,String pk string
"我是中"julia> str =string(data[2:4]...)# 替代方案
"我是中"julia> str =String(data[1:2])
"#我"julia> str =String(data[2:2])
"我"
三、 优化方案
现在封装成自定义函数:
julia> getstrs(strs::String) =collect(take(strs,length(strs)))
getstrs (generic function with 1 method)julia> getindexstrs(strs::String,n,m) =String(getstrs(strs)[n:m]) # String !
getindexstrs (generic function with 1 method)julia> getindexstrs(strs::String,n) =getindexstrs(strs,n,n)
getindexstrs (generic function with 2 method)
效率优化
function stringindex(strs::String,n,m)if isascii(strs)return strs[n:m]elsereturn getindexstrs(strs,n,m)end
end
stringindex(strs,n) =stringindex(strs,n,n);
四、测试
julia> getindexstrs(strs,1,3)
"#我是"julia> getindexstrs(strs,1,1)
"#"julia> getindexstrs(strs,3,3)
"是"julia> getindexstrs(strs,2,4)
"我是中"julia> getindexstrs(strs,5)
"国"julia> getindexstrs(strs,4)
"中"julia> getindexstrs(strs,3)
"是"julia> stringindex("Q我是中国人",1,5) #isascii ->false
"Q我是中国"julia> stringindex("Qabscdsd",2,3) # isascii->true
"ab"
可能还有其它的方式(包括形式和性能都可能不一,如Vector{Char}(strs)),但是这个方式相对比较简单,容易理解。
Julia : 中文字符串的取值 UnicodeError 及解决方案相关推荐
- Jackson第二篇【从JSON字符串中取值】
来源:http://blog.csdn.net/songyongfeng/article/details/6932674 第一篇咱们主要学习了实体与json的相互转换的问题,但是咱们需要的是数据 你转 ...
- PHP字符串offset取值特性
在PHP的代码基础上,PHP字符串offset取值特性,可以拿来利用,给PHP应用程序带来安全风险. 在PHP中,可以像操作数组一样操作字符串,字符串中的字符可以用类似数组结构中的方括号包含对应的数字 ...
- html获取contextpath,JavaScript中${pageContext.request.contextPath}取值问题及解决方案
在JSP里取${pageContext.request.contextPath},方式一是可以正常取到,但方式二却取到的是 字符"${pageContext.request.contextP ...
- 自动化测试基础(一):字符串的取值、切割、替换、去除、拼接
一.前言 字符串:在python中用成对的单引号.双引号.三引号括起来的都是字符串,它可以是中文.英文.特殊字符等几乎任何字符. 二.取值 字符串取值用索引,索引从0开始 s='hello!' #元素 ...
- (转)Python 用hashlib求中文字符串的MD5值
使用过hashlib库的朋友想必都遇到过以下的错误吧:"Unicode-objects must be encoded before hashing",意思是在进行md5哈希运算前 ...
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法
今天遇到一个问题就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 现解决办法如下: 1 ...
- Python 用hashlib求中文字符串的MD5值
From: http://blog.csdn.net/haungrui/article/details/6959340 使用过hashlib库的朋友想必都遇到过以下的错误吧:"Unicode ...
- Python @property装饰器的用法,判断函数参数整形、字符串、取值范围
如果我们对所赋的值有一定的限制,比如要求名字必须是字符串,年龄必须是数字,否则会对方法的调用造成影响,这个时候单纯的赋值就不能满足这样的过滤效果了.既然是条件过滤,那么这几条代码就需要放在方法里,所以 ...
- string类型--字符串常用取值操作
1.字符串常量 (1)不依赖于语言环境: string.ascii_letters ==>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY ...
- python 下划线转驼峰_json字符串中key值下划线命名转换为驼峰命名
json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info ...
最新文章
- 2021 年 ICT 行业预测
- Bing空间数据服务
- MoeCTF 2021Re部分------PE
- 关闭excel多余的addin,提供excel启动速度
- 深度学习pytorch--线性回归(三)
- 小程序设置header cookie
- python并发编程5-线程
- 每天一个Linux命令-cat
- 敲7(升级版约瑟夫)
- Endnote x7 和X8的下载
- 简明外贸报价单(Price List)范本
- 结对作业 ——UI组第八组 冯富禹 齐天浩
- 31位圈内大佬解读DApp困惑:“爆款”也难优秀!
- Vue回炉重造之图片加载性能优化
- win10下PHP开发环境搭建
- CAN负载率为什么不能太高?
- 控制器分析-绘制伯德图
- javaSE探赜索隐之三<类与对象的爱恨情仇上>
- 广发证券电脑linux,广发证券易淘金电脑PC官方版
- ac3音频 机顶盒播放音量变小问题