如何删除具有不同长度的字符串的最后数字 C#

How to remove last numbers of string with different lengths C#

注意:最后两个的长度不同。所以 Length-1 不起作用(对吧?)

如何删除示例中的最后一个数字:

ABStreet 10 552896

ACLane 1520 155

所以输出:

ABStreet 10

ACLane 1520

可能已经有人问过它了,我虽然想到了 TrimEnd,但我似乎无法获得正确的代码。

var x = "ABStreet 10 552896";
var y = "ACLane 1520 155";
Console.WriteLine(x.Substring(0, x.LastIndexOf(' ')));
Console.WriteLine(y.Substring(0, y.LastIndexOf(' ')));

您可以使用简单的 Regex 表达式

List<string> elements = new List<string>() {"ABStreet 10 552896","ACLane 1520 155"};

Regex r = new Regex(@"\d+$");
foreach(string s in elements)
    Console.WriteLine("[" + r.Replace(s, "").Trim() + "]");

这只是匹配字符串末尾的任何数字序列并将其删除(同时修剪掉最后一个 space)

这样就可以了:

string test = "ABStreet 10 552896";
string testWithoutLastNumber = test.Substring(0, test.LastIndexOf(' '));

我只是不确定这是否是最优雅 and/or 最有效的方法。 LastIndexOf 方法查找最后一次出现的空格(或您希望使用的任何字符分隔符),然后 Substring 直到那个位置。由于字符串中的第一个字符位于 position/index 0.

,因此不包括分隔符本身

使用 Regex 看起来像这样:

class Program
{
    static void Main(string[] args)
    {
        string test = "ABStreet 10 552896";

        test = Regex.Replace(test, @"\s\d*$",string.Empty);
        Console.WriteLine(test);
    }
}

或使用 TrimEnd:

class Program
{
    static void Main(string[] args)
    {
        string test = "ABStreet 10 552896";

        test = test.TrimEnd('1', '2', '3', '4', '5', '6', '7', '8', '9', '0').Trim();
        Console.WriteLine(test);
    }
}