at backyard

Color my life with the chaos of trouble.

各言語で文字列変換を試みる。

備忘録である。

先日、Javascriptを使った文字の変換について触れる機会があったので、他の言語ではどうか?と思い、調べてみた。

Javascript

まずはJavascriptから。

String.prototype.charCodeAtはUnicodeを10進数に変換するStringメソッドであり、
String.fromCharCode()はUnicodeの値の数のシーケンスを文字列に変換するStringの静的メソッド。

Mozillaのページを見るとこんな記述があるので、一応貼っておく。

String.fromCharCode() - JavaScript | MDN

fromCharCode は String の静的メソッドなので、自分で生成した String オブジェクトのメソッドではなく、常に、String.fromCharCode() を使用するようにしてください


書いていく。

str = "あ"
str.charCodeAt() // 12354

String.fromCharCode(12354) // あ
String.fromCharCode(12354 + 96) // ア

String.fromCharCode( 0x2600, 0x2601, 0x2602, 0x2603 ); // "☀☁☂☃"

※値に96足すと、ひらがな→かたかなになる(16進数で"0x60")。

下記を眺めると勉強になる。

Unicode一覧表 - Wikipedia

上記のパターンでPython.Ruby,Perlを試してみる。

Python

str = 'あ'
ord(str) # 12354

chr(12354) # あ
chr(12354 + 96) # ア

wheather =[0x2600, 0x2601, 0x2602, 0x2603]
for i in wheather:
    chr(i)

'☀'
'☁'
'☂'
'☃'

Ruby

str = ""
str.ord # 12354

12354.chr("utf-8") # あ
(12354+96).chr("utf-8") # ア

wheather = [0x2600, 0x2601, 0x2602, 0x2603]
=> [9728, 9729, 9730, 9731]
for i in wheather do
  p i.chr("utf-8")
end

""
""
""
""
=> [9728, 9729, 9730, 9731]

Perl

Perlはこのポストで初めて書くので、もしかしたら書き方が間違っているかも。
もし間違っていましたらご指摘いただけると幸いです。

use utf8;

$str = ord("あ");
print $str, "\n"; # 12354

$ch = chr 12354;
print $ch, "\n"; # あ

$ch2 = chr(12354+96);
print $ch2, "\n"; # ア

@weather = (0x2600 .. 0x2603);
foreach $tmp (@weather){
        print chr $tmp,"\n";
}

☀ 
☁
☂
☃

他の言語でも同じように後日書いてみようと思う。

言語毎の書き方の違いを知るのも良い勉強になりますね。