Tag: 字符串

总结文字

如果我有一些text要打印在一个页面上,但只想在打印前说出前100个单词…最简单的方法是什么?

如何在另一个正则表达式中使用Regexp.union?

使用Ruby 2.4。 我想创建一个正则表达式,方法是匹配任意数量的空格,后跟我的数组中出现的字母。 所以我尝试了这个 LETTERS = [“a”, “b”] # => [“a”, “b”] data = [“asdf f”, “sdfsdf x”] # => [“asdf f”, “sdfsdf x”] data.grep(/(^|[[:space:]]+)[#{Regexp.union(LETTERS)}]$/i) # => [“asdf f”, “sdfsdf x”] 但正如你所看到的,尽管我的数组中的两个标记都没有结束,但两个标记都匹配。 我如何重写我的正则表达式来解释这个问题?

如何返回具有重复元素的Ruby数组交集? (骰子系数中的双字母问题)

我正在尝试编写Dice的系数,但我对arrays交叉点有点问题。 def bigram(string) string.downcase! bgarray=[] bgstring=”%”+string+”#” bgslength = bgstring.length 0.upto(bgslength-2) do |i| bgarray << bgstring[i,2] end return bgarray end def approx_string_match(teststring, refstring) test_bigram = bigram(teststring) #.uniq ref_bigram = bigram(refstring) #.uniq bigram_overlay = test_bigram & ref_bigram result = (2*bigram_overlay.length.to_f)/(test_bigram.length.to_f+ref_bigram.length.to_f)*100 return result end 问题是,作为&删除重复,我得到这样的东西: string1=”Almirante Almeida Almada” string2=”Almirante Almeida Almada” puts approx_string_match(string1, string2) => 76.0% 它应该返回100。 uniq方法指出它,但有信息丢失,这可能会在我工作的特定数据集中带来不必要的匹配。 […]

奇怪的Ruby语法?

我正在ruby-lang.org上做Ruby 20分钟的教程,我发现这个代码搞乱了irb: irb(main):015:0> def h(name) irb(main):016:1> puts “Hello #{name}!” irb(main):017:1> end 根据解释, #{name}部分只是将变量添加到字符串中? 我认为这是一种奇怪而冗长的编写方式所以我只是想我会尝试”Hello” + name ,它的工作方式完全一样.. 我用Google搜索试图找到#{}的含义,我找不到任何关于它的事情,所以我想我会问社区..有什么区别? 有吗? 提前致谢!

搜索句子

我有一个rails应用程序,并已决定进行搜索。 我有一个搜索文本域,控制器负责一切。 在我的搜索方法中 def self.search(search) if search str = [] search.split.each do |s| a = find(:all, :conditions => [‘title or content LIKE ?’, “%#{s}%” ]) str = (str + a).uniq end else find(:all) end end 我希望能够处理多个单词搜索。 如果删除每个…循环,它可以正常使用1个单词搜索。 无论如何,我想找到每个被搜索单词的相关post并返回其组合。 防爆。 如果有人搜索“最伟大的玩家”,它将返回标题或内容为“最大”的所有post实例以及任何具有标题或内容“播放器”的post

字符串到哈希转换

我怎么能把字符串转换为哈希? 现在我使用: eval “{‘1627207:28320’=>’text’}” => {‘1627207:28320’=>’text’} 但“eval”对我的情况不利 – 从params传递的字符串,这种情况并不安全 编辑: 传递字符串也可以是: “{‘1627207’=>’text’, ’11:167:28320’=>’text 1 / text 2 / unicode=>привет!’}” 然后需要结果哈希: {‘1627207:28320’=>’text’, ’11:167:28320’=>’text 1 / text 2 / unicode=>привет!’}

为什么我的代码在使用哈希符号而不是哈希字符串时会中断?

我有一个场景,当我尝试使用符号访问哈希键时,它不起作用,但当我用字符串访问它时它工作正常。 我的理解是建议使用符号而不是字符串,所以我试图清理我的脚本。 我在我的脚本中的其他地方使用哈希符号,只是这个特定的场景不起作用。 这是片段: account_params ={} File.open(‘file’, ‘r’) do |f| f.each_line do |line| hkey, hvalue = line.chomp.split(“=”) account_params[hkey] = hvalue end end account_scope = account_params[“scope”] 这是有效的,但如果我使用它不符号,如下所示: account_scope = account_params[:scope] 当我使用符号时,我得到: can’t convert nil into String (TypeError) 我不确定它是否重要,但这个特定哈希值的内容看起来像这样: 12345/ABCD123/12345

Python相当于ruby的StringScanner?

是否有一个等同于ruby的StringScanner类的python类 ? 我可以一起破解某些东西,但如果已经存在,我不想重新发明轮子。

Ruby .split()正则表达式

我正在尝试将字符串”[test| blah] [foo |bar][test|abc]”拆分为以下数组: [ [“test”,”blah”] [“foo”,”bar”] [“test”,”abc”] ] 但我无法正确表达我的正则表达式。 ruby: @test = ‘[test| blah] [foo |bar][test|abc]’.split(%r{\s*\]\s*\[\s*}) @test.each_with_index do |test, i| @test[i] = test.split(%r{\s*\|\s*}) end 我不在那里,这回来了: [ [ “[test” , “blah” ] [ “foo” , “bar” ] [ “test” , “abc]” ] ] 实现这一目标的正确正则表达式是什么? 如果我还可以考虑新行,那就太好了,比如说: “[test| blah] \n [foo |bar]\n[test|abc]”

使用Ruby将String的开头或结尾与子字符串进行比较的最快方法是什么?

切片字符串”Hello world!”[0, 5] == ‘Hello’ 0,5 “Hello world!”[0, 5] == ‘Hello’是Ruby中常用的一种习惯用法,用于将字符串的前n个或后n个字符与另一个字符串进行比较。 正则表达式也可以这样做。 然后是start_with? 和end_with? 这也可以做到这一点。 我应该以最快的速度使用哪种?