我有一个字符串,我需要从字符串中删除最后一个数字。 例如 abc / wed / ash / 123或 abc / tues / 1或 ABC /周四/中心思想/漂亮/ 12
字符串中没有设定的/,但是我想将最后一个/来自字符串后的数字分开。
因此我想得到 abc / wed / ash和123
我发现的所有内容都需要一定数量的/才能使其发挥作用。
答案 0 :(得分:5)
如果你需要两半你可以试试这个:
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
答案 1 :(得分: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"
答案 2 :(得分:0)
您可以通过各种方法实现这一目标,最简洁的方法是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();
答案 3 :(得分:0)
您可以使用正则表达式:
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+)
告诉引擎您希望输入包含任意数量的任何字符,然后是破折号,然后是多个数字。 $表示应该是输入的结尾。
处理文本输入时,请考虑正则表达式。 :)
答案 4 :(得分:0)
正则表达式是你的朋友
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