似乎问题的部分是else
语句的第一部分def self.abbreviate(string)
if string.match("-")
array = string.split("-")
array.each do |word|
if word.length > 3
word.gsub!(/\w+/, "#{word[0]}#{word.length - 2}#{word[word.length - 1]}")
end
end
else
string.gsub!(/\w+/, "#{string[0]}#{string.length - 2}#{string[string.length - 1]}")
end
end
部分正在运行:
"banana" => "b4a"
我要做的是缩写像"hackers" => "h5s"
,"double-barrel" => "d4e-b4l"
这样的字词。这也适用于import socket
s = socket.socket()
host = '103.47.59.130'
port = 80
s.connect((host, port))
while True:
print "From Server: ", s.recv(1024) #This gets printed after sometime
s.send(raw_input("Client please type: "))
s.close()
答案 0 :(得分:0)
您的问题可能出在调用者代码中,前提是函数返回没有-
的单词的字符串和一个包含它的数组:
abbreviate 'abc' => "a1c"
abbreviate 'abc-abc' => ["abc", "abc"]
但是对于你想要做的事情,以下似乎更合适:
def self.abbreviate(string)
string.split("-").map{|s|
s.length > 2 ? "#{s[0]}#{s.size-2}#{s[-1]}" : s
}.join('-')
end
它产生abbreviate "abcd-abcd" => "a2d-a2d"