2

我想修改使用 Ruby 的字符串的一部分。

字符串是[x, y]一个y整数,我想将其更改为它的字母。所以说[1, 1]会变成[1, A][1, 26]会变成[1, Z]

正则表达式会帮助我做到这一点吗?还是有更简单的方法?我对正则表达式不是很擅长,我现在正在阅读这些。

4

2 回答 2

1

我能想到的最短方法如下

string = "[1,1]"
array = string.chop.reverse.chop.reverse.split(',')
new_string="[#{array.first},#{(array.last.to_i+64).chr}]"
于 2012-08-22T16:51:20.860 回答
0

也许这有帮助:

因为我们没有字母表,但我们可以查找位置,创建一个。这是一个转换为数组的范围,因此您无需自己指定。

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"

问候~

于 2012-08-22T16:40:12.233 回答