「RegExp」を探したのですが見つかりませんでした。
調べてみたら、C#でなら同じような関数があるということで実装してみました。
JavaScript側からC#内のCheckEn()を呼んでます↓
-------------------------------------------------------------
■ SharpFunc.cs
using UnityEngine;
using System;
using System.Collections;
using System.Text.RegularExpressions;
public class SharpFunc : MonoBehaviour {
public bool CheckEn(string inChar) {
// 【参考】http://msdn.microsoft.com/en-us/library/30wbz966.aspx
// 【参考】http://befine.jugem.jp/?eid=29
// 数値チェック(全半角)
string patternNum = "\\d";
// アルファベットチェック
string patternAlphabet = "[a-zA-Z]";
// 特殊文字チェック
string patternSpecial = "[\\\\s\\^\\.\\$\\*\\?\\|\\(\\)\\[\\]\\{\\}\\+\\-,:;_\\&\\#\\'\\\"]";
if (Regex.IsMatch(inChar, patternNum) ||
Regex.IsMatch(inChar, patternAlphabet) ||
Regex.IsMatch(inChar, patternSpecial)){
Debug.Log(inChar + " --> true");
return true;
} else {
return false;
}
}
}
-------------------------------------------------------------
■ JavaScript側(呼出し部分のみを抜粋)
var sharpFunc : SharpFunc = GetComponent(SharpFunc);
if (sharpFunc.CheckEn(inChar)) {
return true;
} else {
return false;
}
-------------------------------------------------------------
パターンマッチング対象に漏れがあるかもしれませんが、
とりあえずこれで使ってみてます。
すこし質問させていただきます。
僕も正規表現が使いたくて、usingで正規表現ライブラリを使おうとしたのですが、なにやら赤字になって使えません。(ライブラリが見つかっていない様子です。)
この記事は二年前のものですので、なぜ現在つかえないのかわかりません。
もし解決策をご存知でしたらご教授願えないでしょうか。
よろしくお願いいたします。
改めて検証してみましたが、特に問題なく動作しました。
Unity 4.5.1
Mac OS 10.9.4
Unityのコンソール画面に出力されているエラーログ(赤文字)はどのようになっていますでしょうか。
検証したときに使ったコードはこちらなのですが、これでも同じ現象は起きますでしょうか?
【ファイル名】Test.cs
using UnityEngine;
using System.Collections;
using System;
using System.Collections;
using System.Text.RegularExpressions;
public class Test : MonoBehaviour {
void Start() {
string inChar = "あ";
// 数値チェック(全半角)
string patternNum = "\\d";
// アルファベットチェック
string patternAlphabet = "[a-zA-Z]";
// 特殊文字チェック
string patternSpecial = "[\\\\s\\^\\.\\$\\*\\?\\|\\(\\)\\[\\]\\{\\}\\+\\-,:;_\\&\\#\\'\\\"]";
if (Regex.IsMatch(inChar, patternNum)) Debug.Log(inChar + " --> 数値");
else if (Regex.IsMatch(inChar, patternAlphabet)) Debug.Log(inChar + " --> アルファベット");
else if (Regex.IsMatch(inChar, patternSpecial)) Debug.Log(inChar + " --> 特殊文字");
else Debug.Log(inChar + " --> その他");
return;
// inCharに入力した値と出力結果
// "1" --> 数値
// "a" --> アルファベット
// "?" --> 特殊文字
// "あ" --> その他
}
}