0
バイトバッファEncoding.UTF8.GetString(b.Buffer)
の文字列表現は"Foo:Foo1"です。バッファー文字列を1回だけ渡す方法はありますか。正規表現チェック
文字列をRegexに対して解析し、次にRemoteData
という2つの異なるプロパティ(Message1
とMessage2
)でバインドしたいと思います。
public class RemoteData
{
private string _message1;
private string _message2;
public RemoteData(string Message1, string Message2)
{
this.Message1 = Message1;
this.Message2 = Message2;
}
public string Message1
{
get
{
if (IsValidMessage(_message1))
return _message1 = _message1.Split(':')[0].ToString();
return _message1;
}
set
{
_message1 = value;
}
}
public string Message2
{
get
{
if (IsValidMessage(_message2))
return _message2 = _message2.Split(':')[1].ToString();
return _message2;
}
set
{
_message2 = value;
}
}
private static bool IsValidMessage(string value)
{
const string expression = (@"([\w]+):([\w]+)");
return Regex.IsMatch(value, expression, RegexOptions.IgnoreCase);
}
}
私はクラスRemoteData
のIObservable
を返していますし、コードの下に良い取り組んでいます。
public static IObservable<RemoteData> UdpStream(IPEndPoint endpoint)
{
return Observable.Using(() => new UdpClient(endpoint),
udpClient => Observable.Defer(() =>
udpClient.ReceiveAsync().ToObservable()).Repeat().Select(b => new RemoteData(Encoding.UTF8.GetString(b.Buffer), Encoding.UTF8.GetString(b.Buffer))));
}
質問:
- は私が
Observable
選択に一度だけEncoding.UTF8.GetString(b.Buffer)
を渡すことができ、どのような方法はありますか? - 正規表現をチェックして文字列を変換し、クラス
RemoteData
のさまざまなプロパティに代入するだけで済みますか?
ありがとう!