0

私は文字列を持っています

"transform(23, 45)"

この文字列から23と45を抽出する必要があります。

var xy = "transform(23,45)".Substring("transform(23,45)".indexOf('(') + 1).TrimEnd(')');
var num = xy.Split(',');

私はc#を使用しています。C#でこれを行うためのより良い方法はありますか?

4

4 に答える 4

6

正規表現を使用する:

string sInput = "transform(23, 45)";
Match match = Regex.Match(sInput, @"(\d)+",
              RegexOptions.IgnoreCase);

if (match.Success)
{
    foreach (var sVal in match)
             // Do something with sVal
}

正規表現の詳細については、こちらをご覧ください。トレーニングにRegExrを使用すると、非常に役立ちます。

于 2012-07-16T06:37:09.687 に答える
2

単純な正規表現の文字列はですが([0-9]+)、他の式の制約を定義する必要がある場合があります。たとえば、文字列内のピリオド、コンマなどを処理するために何をしていますか?

var matches = Regex.Matches("transform(23,45)", "([0-9]+)");
foreach (Match match in matches)
{  
    int value = int.Parse(match.Groups[1].Value);
    // Do work.
}
于 2012-07-16T06:39:41.587 に答える
0

これはそれを行います

string[] t = "transform(23, 45)".ToLower().Replace("transform(", string.Empty).Replace(")", string.Empty).Split(',');
于 2012-07-16T06:46:00.827 に答える
0

使用Regex

var matches = Regex.Matches(inputString, @"(\d+)");

説明:

\d    Matches any decimal digit.

\d+   Matches digits (0-9) 
      (1 or more times, matching the most amount possible) 

および使用する場合:

foreach (Match match in matches)
{  
    var number = match.Groups[1].Value;
}
于 2012-07-16T06:53:43.677 に答える