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」の 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"
ご挨拶〜