Julia简易教程——4_字符串操作
0. 前言
在Python中,字符串和字符均可使用双引号" "
或者是单引号' '
, 但是在 Julia 中,单字符使用单引号' '
, 字符串使用" "
, 回归了C中的写法, 但是如果出现引号是字符的形式,可以在最外层加上三引好""" """
, 具体示例如下:
Code.0.1
julia> 'h'
'h': ASCII/Unicode U+0068 (category Ll: Letter, lowercase)
julia> "hello"
"hello"
julia> "hello julia"
"hello julia"
julia> """I say: "hello julia" """
"I say: "hello julia" "
如下写法会报错:
Code.0.2
julia> 'hello julia'
ERROR: syntax: invalid character literal
julia> """I say: "hello julia""""
ERROR: syntax: cannot juxtapose string literal
注意对比 Code.0.1
以及Code.0.2
中的最后一个例子,两个字符串的注意区别是在最后有无空格,如果字符串最后一个是引号,不加空格的话,Julia会识别成连在一起的四引号"""""
,所以会报错。
1. 字符串索引以及 AND 取子字符串
和Python一样,索引也是使用[]
, 但与python不同的是,julia中的索引都是从1开始的,去最后一位是用end
来当作索引,为了方便学习,将使用连续数字组成字符串进行举例:
Code.1.1 普通索引
julia> my_str = "123456789."
"123456789."
julia> my_str[1]
'1': ASCII/Unicode U+0031 (category Nd: Number, decimal digit)
julia> my_str[2]
'2': ASCII/Unicode U+0032 (category Nd: Number, decimal digit)
julia> my_str[3]
'3': ASCII/Unicode U+0033 (category Nd: Number, decimal digit)
# #######################
# 取最后一位, 用end
# #######################
julia> my_str[end]
'.': ASCII/Unicode U+002e (category Po: Punctuation, other)
julia> my_str[end-1]
'9': ASCII/Unicode U+0039 (category Nd: Number, decimal digit)
Code.1.2 取子串索引
julia> my_str[1:2]
"12"
julia> my_str[3:9]
"3456789"
julia> my_str[3:10]
"3456789."
julia> my_str[3:3]
"3"
注意Code.1.1
和 Code.1.2
最后一个例子,使用my_str[3]
和my_str[3:3]
返回的结果不一样,一个是字符还有一个是字符串。
2. 字符串拼接
julia 中不支持使用 +
来进行字符串拼接,会报错,如下例所示:
Code.2.1 拼接错误示例
julia> "hello" + "world"
ERROR: MethodError: no method matching +(::String, ::String)
Closest candidates are:
+(::Any, ::Any, ::Any, ::Any...) at operators.jl:502
Stacktrace:
[1] top-level scope at none:0
Julia中提供了一个奇怪的字符串拼接符号,那就是*
, 也可以使用string(<str1>, <str2>, ...)
方法, 如下示例:
Code.2.2 字符串拼接
julia> string("Hello", " Julia", " ! ")
"Hello Julia ! "
julia> "hello" * " julia" * " !"
"hello julia !"
julia> str1 = "hello"
"hello"
julia> str2 = "julia"
"julia"
julia> string(str1, " ", str2, " !")
"hello julia !"
julia> str1 * " " * str2 * " !"
"hello julia !"
3. 插值操作
为了减少字符串拼接的冗余操作,julia 提供了一种类似于shell、perl 等中的使用$
插值操作,不仅可以进行字符串赋值,还可以进行运算赋值,示例如下:
Code.3.1 插值操作
julia> str1 = "hello"
"hello"
julia> str2 = "julia"
"julia"
julia> "I say: $str1 $str2 !"
"I say: hello julia !"
julia> "3 + 3 = $(3 + 3)"
"3 + 3 = 6"
4. 其他常用操作
Julia中还支持字符串索引搜索, 判断两个字符串的包含关系等
4.1. 索引搜索
索引搜索使用findfirst(<func()>, <str>)
, 其中func()
指的是一种方法,一般为isequal()
等,str
指的是目标字符串,示例如下:
Code.4.1 索引搜索
julia> findfirst(isequal('x'), "xyz123")
1
julia> findfirst(isequal('y'), "xyz123")
2
julia> findfirst(isequal('q'), "xyz123")
Code.4.2 索引偏移量搜索
还可以加上偏移量,使用findnext(<func()>, <str>, <index bais>)
进行查找,findfirst(<func()>, <str>)
默认是从字符串首进行查找,findnext(<func()>, <str>, <index bais>)
是从偏移量位置往后进行查找,示例如下:
julia> findnext(isequal('y'), "xyz123", 1)
2
julia> findnext(isequal('z'), "xyz123z", 5)
7
julia> findnext(isequal('o'), "xyz123z", 8)
4.2. 字符串包含判断
可以用 occursin
函数检查在字符串中某子字符串可否找到,示例如下:
Code.4.3 occursin包含判断
julia> occursin("world", "Hello, julia.")
true
julia> occursin("o", "Hello, julia.")
true
julia> occursin("p", "Hello, julia.")
false
- TensorFlow从0到1 - 6 - 解锁梯度下降算法
- linux下join命令的用法
- [编程经验] 我是如何半自动抓取素材公社图片的
- linux 便捷使用防火墙控制端口访问
- 洛谷 P3802 小魔女帕琪
- 【前沿】见人识面,TensorFlow实现人脸性别/年龄识别
- TensorFlow从0到1 - 1 - Hello, TensorFlow!
- iOS自动布局——Masonry详解
- BZOJ 3450: Tyvj1952 Easy
- [编程经验] TensorFlow实现线性支持向量机SVM
- TensorFlow从0到1 - 2 - TensorFlow核心编程
- BZOJ 4318: OSU!
- 讨厌算法的程序员 5 - 合并算法
- 洛谷 P2679 子串
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel框架学习笔记之组件化开发实现方法
- PHP7创建销毁session的实例方法
- Vim如何使用相对行号实现一切操作详解
- laravel 框架执行流程与原理简单分析
- 对python自动生成接口测试的示例讲解
- 解决pip install xxx报错SyntaxError: invalid syntax的问题
- PHP如何使用JWT做Api接口身份认证的实现
- 解决python3 Pycharm上连接数据库时报错的问题
- php把文件设置为插件的技巧方法
- Python中fnmatch模块的使用详情
- tp5框架使用cookie加密算法实现登录功能示例
- python实现停车管理系统
- 浅谈Pycharm调用同级目录下的py脚本bug
- Python中logging.NullHandler 的使用教程
- Python中利用aiohttp制作异步爬虫及简单应用