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」の 2 番目の整数を保持しています。または、「$1」経由で取得できます。整数に変換することを忘れないでください。

position_in_alphabet = $1.to_i

また、配列のインデックスは 1 ではなく 0 から始まることを覚えておく必要があります。

position_in_alphabet -= 1

最後に、実際に取得した文字を確認できます

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 に答える