Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 - Fatal编程技术网

Ruby 用于前置大写单词的方法

Ruby 用于前置大写单词的方法,ruby,Ruby,我试图把大写的单词移到句子的前面。我希望得到这个: capsort(["a", "This", "test.", "Is"]) #=> ["This", "Is", "a", "test."] capsort(["to", "return", "I" , "something", "Want", "It", "like", "this."]) #=> ["I", "Want", "It", "to", "return", "something", "like", "this."]

我试图把大写的单词移到句子的前面。我希望得到这个:

capsort(["a", "This", "test.", "Is"])
#=> ["This", "Is", "a", "test."]
capsort(["to", "return", "I" , "something", "Want", "It", "like", "this."])
#=> ["I", "Want", "It", "to", "return", "something", "like", "this."]
关键是保持词序

我觉得我很亲近

def capsort(words)
  array_cap = []
  array_lowcase = []
  words.each { |x| x.start_with? ~/[A-Z]/ ? array_cap.push(x) : array_lowcase.push(x) }
  words= array_cap << array_lowcase
end
def capsort(单词)
数组_cap=[]
数组_lowcase=[]
words.each{x | x.start_以?~/[A-Z]/?数组_cap.push(x):数组_lowcase.push(x)}

这个问题被彻底改变了,使我先前的回答完全错了。现在,答案是:

def capsort(strings)
  strings.partition(&/\p{Upper}/.method(:match)).flatten
end

capsort(["a", "This", "test.", "Is"])
# => ["This", "Is", "a", "test."]
我刚才的答覆是:

def capsort(strings)
  strings.sort
end

capsort(["a", "This", "test.", "Is"])
# => ["Is", "This", "a", "test."]

'Z'<'a'#=>真的
,没什么可做的。

问题被彻底改变,使我先前的回答完全错误。现在,答案是:

def capsort(strings)
  strings.partition(&/\p{Upper}/.method(:match)).flatten
end

capsort(["a", "This", "test.", "Is"])
# => ["This", "Is", "a", "test."]
def capsort(words)
  words.partition{|s| s =~ /\A[A-Z]/}.flatten
end

capsort(["a", "This", "test.", "Is"])
# => ["This", "Is", "a", "test."]
capsort(["to", "return", "I" , "something", "Want", "It", "like", "this."])
# => ["I", "Want", "It", "to", "return", "something", "like", "this."]
我刚才的答覆是:

def capsort(strings)
  strings.sort
end

capsort(["a", "This", "test.", "Is"])
# => ["Is", "This", "a", "test."]


'Z'<'a'#=>真的
,没什么可做的。

如果使用简单的排序怎么办<代码>[“a”,“This”,“test.”,“Is”]。sort
返回
=>[“Is”,“This”,“a”,“test.”]
您希望
capsort
为您的示例返回什么?请编辑以添加该选项<代码>“string”不是数组的最佳名称。您的方法只是做了一些艰苦的工作。扔进
Array#flatten
你就完成了。以使现有答案无效的方式更改你的问题是极不礼貌的。这让那些把一部分空闲时间捐出来帮你工作的人看起来像白痴。@JörgWMittag我向你道歉,先生。我不熟悉Ruby和stack overflow,所以道德和文化仍然是新的。你基本上提交了一个“.sort”,所以我不能想象这浪费了你很多时间。我才是那个因为我的问题措词不当而看起来像个傻瓜的人。很难说我在这个问题上也“翻了180度”。我在我的原始帖子后面附加了我想要的输出,以便更好地澄清,并添加了“关键是保持词序。”你不应该担心自己看起来像个白痴。。。您的其他代码很好,您的个人资料也令人印象深刻。谢谢。如果您使用简单的排序怎么办<代码>[“a”,“This”,“test.”,“Is”]。sort返回
=>[“Is”,“This”,“a”,“test.”]
您希望
capsort
为您的示例返回什么?请编辑以添加该选项<代码>“string”不是数组的最佳名称。您的方法只是做了一些艰苦的工作。扔进
Array#flatten
你就完成了。以使现有答案无效的方式更改你的问题是极不礼貌的。这让那些把一部分空闲时间捐出来帮你工作的人看起来像白痴。@JörgWMittag我向你道歉,先生。我不熟悉Ruby和stack overflow,所以道德和文化仍然是新的。你基本上提交了一个“.sort”,所以我不能想象这浪费了你很多时间。我才是那个因为我的问题措词不当而看起来像个傻瓜的人。很难说我在这个问题上也“翻了180度”。我在我的原始帖子后面附加了我想要的输出,以便更好地澄清,并添加了“关键是保持词序。”你不应该担心自己看起来像个白痴。。。您的其他代码很好,您的个人资料也令人印象深刻。谢谢,不太好。编辑我的主要帖子来澄清。不太好。编辑我的主要帖子来澄清。谢谢先生(或女士)!我不确定“这”在“是”之前是什么意思。。。我很确定字母表中“I”在“t”之前。@Anlek,OP希望保留大写单词和非大写单词的顺序,并将前者放在返回的数组中的第一位。@CarySwoveland,谢谢你的解释,这更有意义!)@CarySwoveland:事实上,在提交了几个答案后,OP将问题完全改变了180°。首先,他确实希望对数组进行排序。问题的主题是“Ruby方法对大写单词进行排序”(emphasis mine),应用于问题的标记是和,方法的名称是(现在仍然是)
capsort
。没有提到维护顺序,也没有其他的测试用例。现在的问题完全不同了,所有先前的答案都无效了。先生(或女士)!我不确定“这”在“是”之前是什么意思。。。我很确定字母表中“I”在“t”之前。@Anlek,OP希望保留大写单词和非大写单词的顺序,并将前者放在返回的数组中的第一位。@CarySwoveland,谢谢你的解释,这更有意义!)@CarySwoveland:事实上,在提交了几个答案后,OP将问题完全改变了180°。首先,他确实希望对数组进行排序。问题的主题是“Ruby方法对大写单词进行排序”(emphasis mine),应用于问题的标记是和,方法的名称是(现在仍然是)
capsort
。没有提到维护顺序,也没有其他的测试用例。现在的问题完全不同了,所有先前的答案都无效了。我看不出有什么值得投反对票的。我错过什么了吗?注意:您可以用
[*words.select{x}x}x=~/^[A-Z]/}、*words.reject{x}x=~/^[A-Z]/}]
替换方法体,但是@sawa使用的方法效率更高。
^
的使用给人留下了不好的印象。Ruby还有一个操作符:
x!~/^[A-Z]/
肯定有更有效的方法,而且可以将其放在一行中。这个问题要求优雅,所以我选择了最具可读性的方式,因为可读性是最好的优雅。抓住首都。反其道而行之,抓住小写字母。把它们放在一起。任何人都应该能够在没有任何ruby经验的情况下看到正在发生的事情。我看不到任何值得否决的事情。我错过什么了吗?注意:您可以用
[*words.select{x|x=~/^[A-Z]/},*words.reject{x|x=~/^[A-Z]/}]
替换方法体,不过@sawa使用的方法效率更高。
^
def capsort(words)
  words.partition{|s| s =~ /\A[A-Z]/}.flatten
end

capsort(["a", "This", "test.", "Is"])
# => ["This", "Is", "a", "test."]
capsort(["to", "return", "I" , "something", "Want", "It", "like", "this."])
# => ["I", "Want", "It", "to", "return", "something", "like", "this."]