2

最初の数値が検出されるまで、文字列のすべてのコンテンツを取り出す C# のメソッドがあるかどうかを知りたいです。例:

string myString = "USD3,000";
myString = SomeMethod(myString, [someparameters]);
myString -> "3,000"
4

4 に答える 4

7

組み込みではありませんが、正規表現またはIndexOfAny次のいずれかを使用できます。

static void Main()
{
    string myString = "USD3,000";
    var match = Regex.Match(myString, @"[0-9].*");
    if(match.Success)
    {
        Console.WriteLine(match.Value);
    }
}

また

static readonly char[] numbers = "0123456789".ToCharArray();
static void Main()
{
    string myString = "USD3,000";
    int i = myString.IndexOfAny(numbers);
    if (i >= 0)
    {
        string s = myString.Substring(i);
        Console.WriteLine(s);
    }
}
于 2011-05-26T11:42:21.993 に答える
1

それを行うための組み込みの文字列メソッドはないと思います。ただし、以下の投稿に記載されているコードを微調整して、目的を達成するように変更できます。

文字列が数字で始まるかどうかを判断し、その後のすべての数字を最初の非数値文字まで取得する C# で最も効率的な方法は何ですか?

于 2011-05-26T11:42:25.437 に答える
0

正規表現でそれを行うことができます。

string myString = "USD3,000";
Regex reg = new Regex("[A-Za-z]");
myString = reg.Replace(myString, "");
于 2011-05-26T11:45:05.310 に答える
0
    string str = "ddd3,000.00ss";

    string stripped = new Regex(@"(\d{1,3},(\d{3},)*\d{3}(\.\d{1,3})?|\d{1,3}(\.\d{3})?).*").Match(str).Value;

    Console.WriteLine(stripped);

出力:

3,000.00ss

1000 単位の区切り記号の有無にかかわらず、小数点以下 3 桁までの有無にかかわらず、10 進数と整数に一致する必要があります。

于 2011-05-26T11:58:21.020 に答える