中文一般采用Unicode和 UTF-8编码。

julia> s = "\u2200 x \u2203 y"
"∀ x ∃ y"julia> p="你是好人"
"你是好人"

把UTF-8(中文)字符串切片时到注意:字符∀是三个字节字符,因此索引2和3无效,下一个字符的索引为4;该下一个有效索引可以由nextind(s,1)计算,其后的下一个索引可以由nextind(s,4)计算,依此类推。

julia> s[1]
'∀': Unicode U+2200 (category Sm: Symbol, math)julia> s[2]
ERROR: StringIndexError("∀ x ∃ y", 2)
[...]julia> s[3]
ERROR: StringIndexError("∀ x ∃ y", 3)
Stacktrace:
[...]julia> s[4]
' ': ASCII/Unicode U+0020 (category Zs: Separator, space)
julia> s[end-1]
' ': ASCII/Unicode U+0020 (category Zs: Separator, space)julia> s[end-2]
ERROR: StringIndexError("∀ x ∃ y", 9)
Stacktrace:
[...]julia> s[prevind(s, end, 2)]
'∃': Unicode U+2203 (category Sm: Symbol, math)
julia> s[1:1]
"∀"julia> s[1:2]
ERROR: StringIndexError("∀ x ∃ y", 2)
Stacktrace:
[...]julia> s[1:4]
"∀ "julia> p[1]
'你': Unicode U+4F60 (category Lo: Letter, other)julia> p[2]
ERROR: StringIndexError("你是好人", 2)
Stacktrace:[1] string_index_err(::String, ::Int64) at .\strings\string.jl:12[2] getindex_continued(::String, ::Int64, ::UInt32) at .\strings\string.jl:220[3] getindex(::String, ::Int64) at .\strings\string.jl:213[4] top-level scope at none:0julia> p[4]
'是': Unicode U+662F (category Lo: Letter, other)

为了不出错,还是用迭代器吧。这里面把错误的地方忽略了。

julia> for i = firstindex(s):lastindex(s)tryprintln(s[i])catch# ignore the index errorendend

还有一个更好的方法,字符串本来就可以作为迭代器使用。注意:for c in s这个后面没有冒号,与python不同。

julia> for c in sprintln(c)end
∀x∃yjulia> for i in pprint(i)end
你是好人python>for c in s:print(c)
∀x∃y

如果需要获取字符串的有效索引,则可以使用nextind和prevind函数递增/递减到下一个/上一个有效索引。 还可以使用eachindex函数来迭代有效的字符索引。collect()函数是用来创建array。

julia> collect(eachindex(s))
7-element Array{Int64,1}:145671011

Julia之初体验(八)中文字符相关推荐

  1. CentOS 初体验八:传输本地文件到CentOS

    转载请注明出处http://blog.csdn.net/zhaoyanjun6/article/details/79006748 本文出自[赵彦军的博客] scp 命令 命令: scp 本地文件路径 ...

  2. [Greenfoot中文教程] 01 - Greenfoot初体验

    CH 1  Greenfoot初体验 1.认识Greenfoot界面 OK,打开我们之前建立好的Greenfoot空白工程,我们首先将看到这样一个界面. 首先我们就来认识一下Greenfoot的这个主 ...

  3. 我的Go+语言初体验——(3)Go+ 语言数据类型

    我的Go+语言初体验--(3)Go+ 语言数据类型 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言刚刚发布,网络上还很难找到各种的支持文档和编程指南,使初学者很难深入 ...

  4. shell 清楚空格_Cygwin系列(五):Shell命令行初体验

    ► 本文共5700余字,预计阅读时间15分钟,本文知乎链接:Cygwin系列(五):Shell命令行初体验,本文同步发布于微信公众号. 前一篇文章Cygwin系列(四):一步一步搭建Cygwin最小系 ...

  5. rockyLinux 初体验PostgreSQL15详细安装教程

    原创计划 | 总第 11 期(2023 第 09 期)知识分享 rockyLinux 安装 PostgreSQL 15.2 作者 | 文正耕耘(ID:dywangk) 彼时,PostgreSQL 已经 ...

  6. 【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  7. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

  8. 红黑树做中文字符输入法

    前言 输入一个字符,匹配中文字符的输入法, 例如输入a,输出:啊阿,然后再输入n,即变成an,输出:鞍氨安俺按暗岸胺案, 要求要有搜索的接口,应该如何设计呢? 答案: 红黑树 步骤 1. 设计红黑树的 ...

  9. 小白如何入门Python?记我的Python初体验

    Author:AXYZdong 自动化专业 工科男 有一点思考,有一点想法,有一点理性! 文章目录 前言 一.初识Python 1.Python概述 1.1 Python的创始人 1.2 简介 2.P ...

最新文章

  1. 【MySQL】简单命令总结
  2. 2021年人工神经网络第四次作业 - 第三题Cifar10
  3. numpy vsplit
  4. java内部方法调用_Java学习之类方法的外部和内部调用
  5. pyqt5讲解10:布局管理讲解大全
  6. Maven Git发布
  7. IDDD 实现领域驱动设计-理解限界上下文
  8. 基于Java毕业设计医院诊疗信息管理源码+系统+mysql+lw文档+部署软件
  9. python实现傅里叶变换和反变换
  10. c 语言编写的一元二次方程的根,C#程式求一元二次方程根
  11. 程序员延寿指南-活着才能输出
  12. 黑天鹅mobi_破坏我们系统的因素:黑天鹅分类法
  13. 网站如何防止被篡改?
  14. 今天我们来聊聊,如何做好第三方系统对接
  15. 配置pcie网卡指示灯
  16. Spring、Mybatis、Spring MVC整合实例
  17. 3010基于二叉链表的二叉树高度的计算
  18. Apache-Apollo-MQTT最新地址
  19. SharePoint 2013(rtm版) 安装与配置
  20. 「金融帝国实验室」(Capitalism Lab)现行官方正版游戏『销售政策指引』(2021.07.23-08.15)

热门文章

  1. 校园超市购物系统(JAVA,JSP,SSM,MYSQL)
  2. SonicWALL如何配置BGP
  3. c语言ip字符串转为数组,C语言 ip地址转换为单个数字
  4. Vue组件生命周期钩子和Vue-Router路由钩子的执行顺序
  5. 高斯消元法求解线性方程组——C语言实现
  6. win10+Ubantu双系统
  7. c语言和plc编程,PLC编程-C语言PPT学习课件
  8. 傅老师课堂:Oracle高级查询之CONNECT BY
  9. 解决GitHub release下载慢、clone和push慢的问题
  10. 浪潮国际机场云计算解决方案