Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从字符串中删除重复的子字符串_Ruby_String - Fatal编程技术网

Ruby 从字符串中删除重复的子字符串

Ruby 从字符串中删除重复的子字符串,ruby,string,Ruby,String,我想要像这样的东西: str = "hi ram hi shyam hi jhon" 您正在寻找: 如果您不知道如何修改原始字符串(示例并非如此),您可能需要使用sub和一个额外的变量来查找: str = "hi ram hi shyam hi jhon" str.sub!("hi ", "") #=> "ram hi shyam hi jhon" str.sub!("hi ", "") #=> "ram shyam hi jhon" str.sub!("hi ", "")

我想要像这样的东西:

str = "hi ram hi shyam hi jhon"
您正在寻找:

如果您不知道如何修改原始字符串(示例并非如此),您可能需要使用
sub
和一个额外的变量来查找:

str = "hi ram hi shyam hi jhon"

str.sub!("hi ", "")
#=> "ram hi shyam hi jhon"

str.sub!("hi ", "")
#=> "ram shyam hi jhon"

str.sub!("hi ", "")
#=> "ram shyam jhon"
如果您不知道如何修改原始字符串(这不是示例的样子),您可能需要使用
sub
和一个额外的变量

str = "hi ram hi shyam hi jhon"

str.sub!("hi ", "")
#=> "ram hi shyam hi jhon"

str.sub!("hi ", "")
#=> "ram shyam hi jhon"

str.sub!("hi ", "")
#=> "ram shyam jhon"
要删除一个引用,请执行以下操作:

str = "hi ram hi shyam hi jhon"
要删除n个引用,请执行以下操作:

str.sub('hi', '').strip.squeeze
#⇒ "ram hi shyam hi jhon"
要删除一个引用,请执行以下操作:

str = "hi ram hi shyam hi jhon"
要删除n个引用,请执行以下操作:

str.sub('hi', '').strip.squeeze
#⇒ "ram hi shyam hi jhon"

我假设您希望删除所有重复出现的单词,而不仅仅是
“hi”
。这里有两种方法

1使用,以及

uniq的文档声明:“
self
按顺序遍历,并保留第一个匹配项。”

2使用正则表达式

str = "hi shyam ram hi         shyam hi jhon"

str.split.reverse.uniq.reverse.join(' ')
  #=> "ram shyam hi jhon"

要删除多余的空格,请将正则表达式定义的第三行中的
\s
更改为
\s+

我假定您要删除所有重复出现的单词,而不仅仅是
“hi”
。这里有两种方法

1使用,以及

uniq的文档声明:“
self
按顺序遍历,并保留第一个匹配项。”

2使用正则表达式

str = "hi shyam ram hi         shyam hi jhon"

str.split.reverse.uniq.reverse.join(' ')
  #=> "ram shyam hi jhon"

要删除多余的空格,请将正则表达式定义的第三行中的
\s
更改为
\s+

这家伙在开玩笑说我要停药!投赞成票:)这家伙开玩笑说我不吃药!赞成票:)