2

文字列が数値で始まるかどうかを確認します

if(RegEx(IsMatch(myString, @"\d+"))) ...

この条件が当てはまる場合、文字列が始まるこの「数値」部分文字列の長さを取得したいと思います。

次のすべての文字が最初の文字から始まり、カウンターを増やす数字であるかどうかをチェックする長さを見つけることができます。これを行うより良い方法はありますか?

4

6 に答える 6

6

を使用する代わりに、一致するものを見つけるIsMatch必要があります。

// Presumably you'll be using the same regular expression every time, so
// we might as well just create it once...
private static readonly Regex Digits = new Regex(@"\d+");

...

Match match = Digits.Match(text);
if (match.Success)
{
    string value = match.Value;
    // Take the length or whatever
}

これは、数字が文字列の先頭にあることを確認しないことに注意してください。@"^\d+"which を使用して、試合を最初に固定することができます。または、必要match.Indexに応じて 0 であることを確認できます...

于 2012-06-02T19:02:34.567 に答える
4

文字列が数字で始まるかどうかを確認するには、 pattern を使用する必要があります^\d+

string pattern = @"^\d+";
MatchCollection mc = Regex.Matches(myString, pattern);
if(mc.Count > 0)
{
  Console.WriteLine(mc[0].Value.Length);
}
于 2012-06-02T19:05:00.957 に答える
3

正規表現は、文字列に 1 つ以上の数字のシーケンスが含まれているかどうかをチェックします。それで始まることを確認したい場合は、最初に固定する必要があります。

Match m = Regex.Match(myString, @"^\d+");
if (m.Success)
{
    int length = m.Length;
}
于 2012-06-02T19:04:19.217 に答える
1

正規表現の代わりに、拡張メソッドを使用できます。

int cnt = myString.TakeWhile(Char.IsDigit).Count();

文字列の先頭に数字がない場合は、当然ゼロ カウントになります。それ以外の場合は、桁数があります。

于 2012-06-02T19:20:11.460 に答える
0

をチェックするだけIsMatchでなく、一致を取得して、長さなどの情報を取得できます。

var match = Regex.Match(myString, @"^\d+");
if (match.Success)
{
    int count = match.Length;
}

また、パターンの先頭に a を追加し^て、文字列の先頭に制限しました。

于 2012-06-02T19:02:29.287 に答える
0

コードをもう少し分解すると、Regex.Matchを利用できます。

var length = 0;

var myString = "123432nonNumeric";
var match = Regex.Match(myString, @"\d+");

if(match.Success)
{
    length = match.Value.Length;
}
于 2012-06-02T19:03:09.177 に答える