C# 如何从字符串中删除特定字符C后的数字#

C# 如何从字符串中删除特定字符C后的数字#,c#,C#,我有一个字符串,需要从字符串中删除最后一个数字。 例如 abc/wed/ash/123或 abc/tues/1或 abc/thurs/clou/nice/12 字符串中没有设置数量的/,但是我想将最后一个/后面的数字与字符串分开 因此,我想 abc/wed/ash和123 我发现的每样东西都需要一定量的/才能起作用。你可以通过多种方法来实现这一点,最干净的方法是Francies的答案。这将是: // Performant: var input = "/Product/Electrical/Wir

我有一个字符串,需要从字符串中删除最后一个数字。 例如 abc/wed/ash/123或 abc/tues/1或 abc/thurs/clou/nice/12

字符串中没有设置数量的/,但是我想将最后一个/后面的数字与字符串分开

因此,我想 abc/wed/ash和123


我发现的每样东西都需要一定量的/才能起作用。

你可以通过多种方法来实现这一点,最干净的方法是Francies的答案。这将是:

// Performant:
var input = "/Product/Electrical/Wire/4421";
var index = input.LastIndexOf('/');

var id = int.Parse(input.Substring(index + 1));
var url = input.Substring(0, index);
您还可以执行以下操作,这是一个很好的替代语法:

// Easy to read syntax.
var input = "/Product/Electrical/Wire/4421";
var id = input.Skip(input.LastIndexOf('/') + 1);
var url = input.Take(input.LastIndexOf('/'));
如果您只需要号码,您可以:

var input = "/Product/Electrical/Wire/4421";
var id = input.Split('/').Last();

您可以使用正则表达式:

const string Input = "abc/def/123";
var regex = new Regex(@"(.+)/(\d+)$");
foreach (var group in regex.Match(Input).Groups)
    Console.WriteLine(group.ToString());
Console.ReadKey();
更新

好吧,也许我应该解释一下。通过指定模式,您可以非常清晰地表达您感兴趣的输入部分。例如,在这种情况下,模式
@(+)/(\d+)
告诉引擎,您希望输入包含任意数量的字符,然后是破折号,然后是数字。$意味着输入应该结束


处理文本输入时,考虑正则表达式::)p> 如果您需要两半,您可以尝试以下方法:

var s = "abc/thurs/clou/nice/12";
var index = s.LastIndexOf('/');

var number = Int32.Parse(s.Substring(index + 1)); //12

var leftHalf = s.Substring(0, index); //abc/thurs/clou/nice
Regex是你的朋友

        Regex regex = new Regex(@"(.*?)(\d+)$");
        Match match = regex.Match("abc/tues/1");
        Console.WriteLine(match.Groups[1].Value); -->abc/tues/
        Console.WriteLine(match.Groups[2].Value); -->1
获取输入字符串的最后一个索引“/”,然后在子字符串中使用该结果:

var input = "abc/wed/ash/123";
var lastIndex = input.LastIndexOf("/");
var part1 = input.Substring(0, lastIndex); // "abc/wed/ash"
var part2 = input.Substring(lastIndex + 1); // "123"

使用
LastIndexOf
查找最后一个斜杠,并使用
Substring
删除它。您已经尝试了什么?为什么要将其标记为SQL?我想知道如何使用SQL查询。将来如果我需要对您的第一个代码示例进行一些评论的话。
上的迭代器,其中
是一个字符串,表示每个斜杠之间的一组字符。@maccettura我修正了我的答案,应该是实心的。我相信中间的另一个不错的方法,ReGEX是多余的,为此我会避开Rgex。entirely@maccettura我不认为这有多过分。在代码行数方面,与
LastIndexOf()
方法相比基本没有区别。我明白为什么在寻找最后一个破折号的时候,有人不肯投入精力,但你为什么要避免它?@tgz代码行数不是你决定效率的方式。这只会给我最后一个数字,所以如果我有12而不是1,我只得到2而不是112@tgz数量和线条是一个因素,执行表达式的频率越高,执行速度就越慢,因为它们是为灵活性而设计的。最简单、最有效的答案+1@user3590040仅供参考有一个4票以上的答案,实际上比你标注的答案早。另外,它实际上给你一个整数而不是字符串