Julia的入门指南,Y Minutes中的Learn Julia,不鼓励用户索引UTF8字符串:
# Some strings can be indexed like an array of characters
"This is a string"[1] # => 'T' # Julia indexes from 1
# However, this is will not work well for UTF8 strings,
# so iterating over strings is recommended (map, for loops, etc).
Run Code Online (Sandbox Code Playgroud)
为什么不鼓励迭代这些字符串呢?具体关于这种备用字符串类型的结构会使索引错误?这是Julia特定的陷阱,还是扩展到所有支持UTF8字符串的语言?
处理超出 1-127 范围的 ASCII 字符很容易使 Julia 崩溃。
\nmystring = "A-Za-z\xc3\x80-\xc3\xbf\xc5\xbd\xc5\xbe"\nfor i in 1:length(mystring)\n print(i,":::")\n print(Int(mystring[i]),"::" )\n println( mystring[i] )\nend\nRun Code Online (Sandbox Code Playgroud)\n给我
\n1:::65::A\n2:::45::-\n3:::90::Z\n4:::97::a\n5:::45::-\n6:::122::z\n7:::192::\xc3\x80\n8:::ERROR: LoadError: StringIndexError("A-Za-z\xc3\x80-\xc3\xbf\xc5\xbd\xc5\xbe", 8)\nStacktrace:\n [1] string_index_err(::String, ::Int64) at .\\strings\\string.jl:12\n [2] getindex_continued(::String, ::Int64, ::UInt32) at .\\strings\\string.jl:220\n [3] getindex(::String, ::Int64) at .\\strings\\string.jl:213\n [4] top-level scope at R:\\_LV\\STZ\\Web_admin\\Languages\\Action\\Returning\\chars.jl:5\n [5] include(::String) at .\\client.jl:457\n [6] top-level scope at REPL[18]:1 \nRun Code Online (Sandbox Code Playgroud)\n它在输出正常范围之外的第一个字符后崩溃,而不是在输出期间崩溃,这在字符串索引错误(Julia)
的答案中提到\n如果在 Julia 中声明值,应该将它们声明为 Unicode,但我有这些字符在我的输入中。
\n手册说 Julia 会查看语言环境,但是是否存在“无处不在”的语言环境?
\n
\n是否有某种方法可以在 Julia 中处理这些字符的输入和输出?
我正在使用 Windows10,但如果 Linux 更适合我,我可以切换到 Linux。
\n