0

有没有办法使用标准 .NET 工具将字符串从左到右修剪为第一个数字?或者我需要编写自己的函数(不难,但我宁愿使用标准方法)。对于提供的输入,我需要以下输出:

Input           Output
-----------------------
abc123def       123
;'-2s;35(r      2s;35
abc12de3f4g     12de3f4
4

3 回答 3

4

您需要使用正则表达式

string TrimToDigits(string text)
{
    var pattern = @"\d.*\d";
    var regex = new Regex(pattern);

    Match m = regex.Match(text);   // m is the first match
    if (m.Success)
    {
        return m.Value;
    }

    return String.Empty;
}

如果您想像通常那样调用该String.Trim()方法,则可以将其创建为扩展方法

static class StringExtensions
{
    static string TrimToDigits(this string text)
    {
        // ...
    }
}

然后你可以这样称呼它:

var trimmedString = otherString.TrimToDigits();
于 2013-02-18T18:36:52.987 回答
1

不,没有内置的方式。您必须编写自己的方法来执行此操作。

于 2013-02-18T18:33:03.397 回答
0

不,我认为没有。方法虽然:

for (int i = 0; i < str.Length; i++)
{
    if (char.IsDigit(str[i]))
    {
        break;
    }
    str = string.Substring(1);
}
for (int i = str.Length - 1; i > 0; i--)
{
    if (char.IsDigit(str[i]))
    {
        break;
    }
    str = string.Substring(0, str.Length - 1);
}

我认为这会奏效。

于 2013-02-18T18:39:11.383 回答