我想修改使用 Ruby 的字符串的一部分。
字符串是[x, y]
一个y
整数,我想将其更改为它的字母。所以说[1, 1]
会变成[1, A]
和[1, 26]
会变成[1, Z]
。
正则表达式会帮助我做到这一点吗?还是有更简单的方法?我对正则表达式不是很擅长,我现在正在阅读这些。
我能想到的最短方法如下
string = "[1,1]"
array = string.chop.reverse.chop.reverse.split(',')
new_string="[#{array.first},#{(array.last.to_i+64).chr}]"
也许这有帮助:
因为我们没有字母表,但我们可以查找位置,创建一个。这是一个转换为数组的范围,因此您无需自己指定。
alphabet = ("A".."Z").to_a
然后我们尝试从字符串中获取整数/位置:
string_to_match = "[1,5]"
/(\d+)\]$/.match(string_to_match)
也许正则表达式可以改进,但是对于这个例子来说它是有效的。MatchData 中的第一个引用是在“string_to_match”中保存第二个整数。或者您可以通过“$1”获得它。不要忘记将其转换为整数。
position_in_alphabet = $1.to_i
我们还需要记住,数组的索引从 0 开始,而不是 1
position_in_alphabet -= 1
最后,我们可以看看我们真正得到了哪个char
char = alphabet[position_in_alphabet]
例子:
alphabet = ("A".."Z").to_a #=> ["A", "B", "C", ..*snip*.. "Y", "Z"]
string_to_match = "[1,5]" #=> "[1,5]"
/(\d+)\]$/.match(string_to_match) #=> #<MatchData "5]" 1:"5">
position_in_alphabet = $1.to_i #=> 5
position_in_alphabet -= 1 #=> 4
char = alphabet[position_in_alphabet] #=> "E"
问候~