Есть ли метод, который обрезает часть строки до тех пор, пока в C # не встретится первое число? - PullRequest
2 голосов
/ 26 мая 2011

Я хотел бы знать, существует ли какой-либо метод в C #, который извлекает все содержимое строки , пока не встретится первое число.Пример:

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

Ответы [ 4 ]

7 голосов
/ 26 мая 2011

Не встроенный, но вы можете просто использовать регулярное выражение или 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);
    }
}
1 голос
/ 26 мая 2011

Я не думаю, что есть какие-либо встроенные строковые методы для этого. Однако вы можете настроить код, приведенный в следующем посте, и изменить его для достижения желаемого:

Какой самый эффективный способ в C # определить, начинается ли строка с числа, а затем получить все последующие числа вплоть до первого нецифрового символа?

0 голосов
/ 26 мая 2011
    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

Должно совпадать десятичное и целое число с тысячными разделителями или без них, а также с максимум 3 десятичными знаками или без них.

0 голосов
/ 26 мая 2011

Вы можете сделать это с помощью регулярных выражений.

string myString = "USD3,000";
Regex reg = new Regex("[A-Za-z]");
myString = reg.Replace(myString, "");
...