gpt4 book ai didi

ruby - 如何从句子(字符串)中删除最后一个词

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:14 24 4
gpt4 key购买 nike

如何删除最后一个元素?例如,我有这样的字符串:

str1 = "My testing String"
str2 = "My another testing string"

我需要一种简洁的方式来显示输出:

str1 = "My testing"
str2 = "My another testing"

这是我能做的:

str1 = str1.split(" ")
str1.delete(str1.last)
str1.join(" ")
# => "My testing"

我想知道是否有任何简洁的方法可以在一行中执行此操作,例如:str.split("", 2).last => "testing string",它应该显示 “我的测试” 代替。

编辑

感谢你们提供的多个有趣的答案。我感谢你的努力和时间。但是,我必须公平,所以我决定以每个人的答案为基准。这是带有基准的报告:

#!/usr/bin/ruby
require 'benchmark'
str2 = "My another testing string"
n = 500
Benchmark.bm(20) do |x|
x.report("str2[/(.*)\s/,1] "){ n.times { str2[/(.*)\s/,1] } }
x.report("str2[0...str2.rindex(' ')] "){ n.times { str2[0...str2.rindex(' ')] } }
x.report("str2.split(' ')[0...-1].join(' ') "){ n.times { str2.split(' ')[0...-1].join(' ') } }
x.report("str2[/.*(?=\s)/] "){ n.times { str2[/.*(?=\s)/] } }
end


user system total real
str2[/(.*) /,1] 0.000000 0.000000 0.000000 ( 0.001394)
str2[0...str2.rindex(' ')] 0.000000 0.000000 0.000000 ( 0.000956)
str2.split(' ')[0...-1].join(' ') 0.010000 0.000000 0.010000 ( 0.002569)
str2[/.*(?= )/] 0.000000 0.000000 0.000000 ( 0.001351)

这清楚地表明答案 p str2[0...str2.rindex(' ')] 表现良好。尽管我也喜欢其他方法,但非常周到且有趣。谢谢。

第二版

根据@theTineMan 的评论,这里是更新的基准:

require 'benchmark'
str2 = "My another testing string"
n = 999999
Benchmark.bmbm(20) do |x|
x.report("str2[/(.*)\s/,1] "){ n.times { str2[/(.*)\s/,1] } }
x.report("str2[0...str2.rindex(' ')] "){ n.times { str2[0...str2.rindex(' ')] } }
x.report("str2.split(' ')[0...-1].join(' ') "){ n.times { str2.split(' ')[0...-1].join(' ') } }
x.report("str2[/.*(?=\s)/] "){ n.times { str2[/.*(?=\s)/] } }
end

Rehearsal ----------------------------------------------------------------------
str2[/(.*) /,1] 1.030000 0.000000 1.030000 ( 1.033787)
str2[0...str2.rindex(' ')] 0.850000 0.000000 0.850000 ( 0.853124)
str2.split(' ')[0...-1].join(' ') 4.740000 0.000000 4.740000 ( 4.750215)
str2[/.*(?= )/] 0.990000 0.000000 0.990000 ( 0.990726)
------------------------------------------------------------- total: 7.610000sec

user system total real
str2[/(.*) /,1] 1.020000 0.000000 1.020000 ( 1.014772)
str2[0...str2.rindex(' ')] 0.830000 0.000000 0.830000 ( 0.839385)
str2.split(' ')[0...-1].join(' ') 4.620000 0.010000 4.630000 ( 4.629874)
str2[/.*(?= )/] 0.990000 0.000000 0.990000 ( 0.988224)

最佳答案

str2 = "My another testing string"     
p str2[/(.*)\s/,1] #=> My another testing

如果您不喜欢正则表达式:

str2 = "My another testing string"
p str2[0...str2.rindex(' ')] #=> My another testing

关于ruby - 如何从句子(字符串)中删除最后一个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com