我在读取具有固定列长度格式的文件时遇到了一些问题。某些列可能包含变音符号。
元音变音似乎使用 2 个字节而不是 1 个字节。这不是我所期望的行为。有没有返回子字符串的函数?在这种情况下, slice 似乎不起作用。
这里有一些示例代码:
http://play.golang.org/p/ZJ1axy7UXe
umlautsString := "Rhön"
fmt.Println(len(umlautsString))
fmt.Println(umlautsString[0:4])
打印:
5
Rhö
最佳答案
在 go 中,字符串的 slice 计算字节数,而不是 runes .这就是为什么 "Rhön"[0:3] 给你 Rh 和 ö 的第一个字节。
以 UTF-8 编码的字符表示为 rune ,因为 UTF-8 将字符编码为多个 byte(最多四个字节)以提供更大范围的字符。
如果要使用 [] 语法对字符串进行 slice ,请先将字符串转换为 []rune。
示例(on play):
umlautsString := "Rhön"
runes = []rune(umlautsString)
fmt.Println(string(runes[0:3])) // Rhö
值得注意的:This golang blog post about string representation in go .
关于go - 变音符号和 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19432380/
在Railcasts上,我注意到一个非常有趣的功能“转到符号”窗口。它像Command-T一样工作,但显示当前文件中可用的类和方法。如何在vim中获取它? 最佳答案 尝试:helptags有各种程序和脚本可以生成标记文件。此外,标记文件格式非常简单,因此很容易将sed(1)或类似的脚本组合在一起,无论您使用何种语言,它们都可以生成标记文件。轻松获取标记文件(除了下载生成器之外)的关键在于格式化样式而不是实际解析语法。 关于ruby-on-rails-Textmate'Gotosymbol
自97年以来我一直在使用vi/vim进行各种快速编辑和管理任务,但最近才考虑使用它来替换Netbeans作为我选择的ruby编辑器。我发现一件事在Netbeans和Eclipse中非常有用的是Ctrl+Click“转到定义”功能,您可以在其中按住Ctrl键并单击一个类或方法,然后它将带您了解定义。现在,我玩过丰富的ctags和rails.vim,而且很接近,但没有雪茄。这就是我想要的:默认情况下在Netbeans和Eclipse中,您可以在本地rails中按住ctrl并单击本地方法或类项目,但你也可以ctrl+click定义在gems或用Ruby编写的系统库。以Netbeans为例
我不明白为什么在Ruby中,Array#slice和Array#slice!的行为与Array#sort和Array#sort!(一个返回新数组的结果,另一个处理当前对象)。使用sort第一个(没有爆炸),返回当前数组的排序副本,并且sort!对当前数组进行排序。slice,返回指定范围的数组,slice!从当前对象删除指定范围。Array#slice!的行为为何如此,而不是使当前对象成为具有指定范围的数组?例子:a=[0,1,2,3,4,5,6,7,8,9]b=a.slice(2,2)puts"slice:"puts"a="+a.inspectputs"b="+b.inspectb=
问题是:Ruby的URI库不处理元音变音;即irb>require"uri"irb*URI("http://abc.de/äöü")URI::InvalidURIError:badURI(isnotURI?):http://abc.de/äöü我该如何处理?这是Ruby1.9.2,顺便说一下。 最佳答案 调用URI.encode解析前:require'uri'uri=URI(URI.encode("http://abc.de/äöü"))作为旁注,请注意,如果URL包含哈希片段(#something),您将必须手动拆分它:requi
Scala有Rubys的版本吗each_slice来自Array类? 最佳答案 Scala2.8有grouped将数据分成大小为n的block(可用于实现each_slice功能):scala>vala=Array(1,2,3,4,5,6)a:Array[Int]=Array(1,2,3,4,5,6)scala>a.grouped(2).foreach(i=>println(i.reduceLeft(_+_)))3711据我所知,在2.7.x中没有任何东西可以开箱即用,但是从take(n)和drop(n)来自RandomAccess
有一个很similarquestion已经。其中一种解决方案使用如下代码:string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n,'').to_s这会产生奇迹,直到您注意到它还删除了空格、点、破折号,谁知道还有什么。我不太确定第一个代码是如何工作的,但是它可以去除仅重音吗?或者至少得到一份要保留的字符列表?我对正则表达式的了解很少,但我尝试了(无济于事):/[^\-x00-\x7F]/n#Soitwouldleavethedashalone我将要做这样的事情:string.mb_chars.normalize(:kd).gsub('-','
这个问题在这里已经有了答案:HowdoIcreatemultiplesubmitbuttonsforthesameforminRails?(7个答案)关闭9年前。所以..'save'%>'library'%>然后在我的Controller中:with_actiondo|a|a.savedoenda.librarydoendend问题是只有一个操作被调用...两个submit_tags调用相同的操作...知道为什么吗?或者我如何获得两个按钮以将表单提交给两种不同的方法?
这个问题在这里已经有了答案:Rubyarrayaccess2consecutive(chained)elementsatatime(4个答案)关闭3年前。给定这个Ruby数组:[1,2,3,4,5]像这样迭代它的最简单方法是什么?[[1,2],[2,3],[3,4],[4,5]]还是这个?[[1,2,3],[2,3,4],[3,4,5]]
我在Ruby1.9.3的IRB和MacOS10.7.3中遇到了非常奇怪的行为当我尝试输入变音符号时,它在提示符中被转义,看起来像这样(我在键盘上输入了"ü")irb(main):001:0>"\U+FFC3\U+FFBC"最奇怪的是:irb(main):001:0>"\U+FFC3\U+FFBC".length=>0当然,字符也不显示:irb(main):001:0>"\U+FFC3\U+FFBC"=>""有谁知道这里发生了什么或如何解决这个问题? 最佳答案 VictorMoroz没有给出明确的答案,但他的链接让我找到了解决方案(谢
IV.SYSTEMIMPLEMENTATIONWeadoptmodulardesignfollowingtheintegrationofblockchain.Itbringsmoreflexibilitybyseparatingtheimplementationofdifferentfunctionalities,sowecouldleveragetheadvantagesoftheblockchain-basedsmartcontractwhilereducingoverhead.Figure3illustrateshowdifferentmodulesareinvolvedintheint