「21A244」のようなものを分割するには、C#で正規表現を使用する必要があります。
- 最初の 2 つの数字は 1 ~ 99 です
- 文字は A ~ Z の 1 文字のみです
- 最後の 3 つの数字は 111 ~ 999 です
だから私はこのマッチを作った "([0-9]+)([AZ])([0-9]+)"
しかし、何らかの理由で C# で使用すると、一致関数は入力文字列を返すだけです。それで、パターンが正しいことを確認するためにLuaで試してみましたが、そこでは問題なく動作しました。
関連するコードは次のとおりです。
var m = Regex.Matches( mdl.roomCode, "(\\d+)([A-Z])(\\d+)" );
System.Diagnostics.Debug.Print( "Count: " + m.Count );
ご参考までに、動作中の Lua コードを次に示します。
local str = "21A244"
print(string.match( str, "(%d+)([A-Z])(%d+)" ))
助けてくれてありがとう
編集:解決策を見つけました
var match = Regex.Match(mdl.roomCode, "(\\d+)([A-Z])(\\d+)");
var group = match.Groups;
System.Diagnostics.Debug.Print( "Count: " + group.Count );
System.Diagnostics.Debug.Print("houseID: " + group[1].Value);
System.Diagnostics.Debug.Print("section: " + group[2].Value);
System.Diagnostics.Debug.Print("roomID: " + group[3].Value);