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

时间:2015-03-04 10:19:50

标签: c# string trim

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

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

  

ABStreet 10 552896

     

ACLane 1520 155

因此输出:

  

ABStreet 10

     

ACLane 1520

它可能已经在某个地方被问到了,我虽然是TrimEnd,但我似乎无法获得正确的代码。

4 个答案:

答案 0 :(得分:1)

使用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);
    }
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用简单的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() + "]");

这只是匹配字符串末尾的任何数字序列并将其删除(也会删除最后一个空格)

答案 3 :(得分:0)

这就是工作:

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

我只是不确定它是否是最优雅和/或最有效的方法。 LastIndexOf方法查找空格的最后一次出现(或者您希望使用的任何字符分隔符),然后直到达到该位置的Substring。由于字符串中的第一个字符位于/ 0位置,因此不包括分隔符本身。