如何将unicode字符串附加到Julia中的字符串列表?

时间:2017-03-30 08:47:20

标签: string unicode julia list-comprehension

对于整数,列表理解可以通过以下方式完成:

julia> nums = [1,2,3,4]
4-element Array{Int64,1}:
 1
 2
 3
 4

julia> nums = [i+1 for i in nums]
4-element Array{Int64,1}:
 2
 3
 4
 5

但是当我尝试在字符串中添加一个字符时,它会抛出一个错误:

julia> s = split("the lazy fox jumps over the brown dog")
8-element Array{SubString{String},1}:
 "the"  
 "lazy" 
 "fox"  
 "jumps"
 "over" 
 "the"  
 "brown"
 "dog"  

julia> s2 = [word +'X' for word in s]
ERROR: syntax: invalid comprehension syntax

当角色是私人unicode char(http://www.fileformat.info/info/unicode/char/e000/index.htm)时,它会抛出另一个错误:

julia> s2 = [word + u'\uE000' for word in s]

错误:UndefVarError:你没有定义  in collect(:: Base.Generator {Array {SubString {String},1},## 3#4})at ./array.jl:307

如何将unicode char / string附加到Julia中的字符串列表?

2 个答案:

答案 0 :(得分:2)

要快速回答您的问题,正确的方法是

[i*"X" for i in s]

但是,请记住'X'是和"X"是两回事。

julia> val = 'X'
'X'
julia> typeof(val)
Char

julia> val = "X"
"X"
julia> typeof(val)
String

如果你有一个Python背景,两者之间没有区别,那么最初可能会发生这种情况。

Julia中的字符串连接也由*而不是+完成! 你可能会问为什么会这样!好好看一下这篇文章here

答案 1 :(得分:1)

正如另一个答案所说,如果你需要追加一个字符串,你可以使用字符串连接运算符:

[word * "X" for word in s]

如果确实需要连接Char,比如因为你在某个变量c中有它,可以使用字符串插值来完成,如下所示:< / p>

["$word$c" for word in s]

(当然,您也可以使用String将其转换为string(c)并使用第一种形式。)