2016年09月29日

アップデート後の問題解決 | 正規表現で言語設定を一般化

さて、前回の続き、正規表現ですね〜。

自分としては、前みたいに、"en" とか、 "ja" とかで言語設定を取るようにしたいので、
"en-US" とかから、後半部分の"-US" 部分を取り除いて行ってみたいと思います。

まずは、正規表現の為に、これを追加。
using_for_regularExpression.png

で、文字列の取り出し部分ですが、こんな感じで書いてみました。

    string row_lang DeviceinfoPluginBinding.Instance.getCurrentLanguage();

    Regex  reg new Regex(@"^(?<lang_body>\w+?)-\w+");
        Match      res=reg.Match(row_lang);

    if(res.Success==false)
        returnrow_lang;

    returnres.Groups["lang_body"].ToString();

実際は、いろんな所を参考にしたんですが、もうどこを参考にしたか覚えてないので、省きますね。
ごめんなさい...

実際のデータでは、row_lang の部分が、"en-US" とかになってます。
Match 型っているのが、指定した正規表現に一致する文字があるかどうかの結果を格納する型なんですが、
その中の、 bool 型の Success が true だったら、一致部分があることになります。

なので、もし一致しなかった場合は、row_lang をそのまま返して、"ja" とかだった場合は、これでそのまま対応できるはず。
で、"en-US" とかの場合は、Success が true になって、Group 辞書に格納されているはずなんで、そこから一致した文字列を取り出し!
これが、 res.Groups["lang_body"] の部分ですね。

では、肝心の正規表現の本体ですが....
        Regex(@"^(?<lang_body>\w+?)-\w+")

^
が、文字列の先頭から。

(?<lang_body>\w+?)
() で一致文字の取り出し。さらに?<lang_body>   ? で、Groups["lang_body"] に格納。
\w+ で、1文字以上の英数字。

-
は、そのまま。ハイフン。今回のケースでは、ハイフンの手前まで取り出し。

\w+
で、またハイフンの後の、1文字以上の英数字。

以上の条件に一致する文字列の時に、Success = true になるわけです!!

その他は、もう疲れたんで、ググってみてくださいね!!

初めてみました。よかったらクリックお願いしますね ♪
        にほんブログ村 ゲームブログ×PlayNCBlogへ 
posted by やまけん at 09:18| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: