我需要删除最后一次数值后的所有内容,如下所示:
1234D
应为1234
ABCD1234A_BC
应为ABCD1234
答案 0 :(得分:2)
此方法应该为您完成:
public string StripAfterLastNumber(string s)
{
int index= s.LastIndexOfAny("0123456789".ToCharArray());
return s.Remove(index+1);
}
缩短版本:
public string StripAfterLastNumber(string s)
{
return s.Remove(s.LastIndexOfAny("0123456789".ToCharArray())+1);
}
答案 1 :(得分:1)
这是一种相当迂回的方式:
string testString = "1234D";
string result = testString.Substring(0, testString.Length - testString.Reverse().TakeWhile(c => !char.IsNumber(c)).Count());
修改:
更短(更快)的方式:
string result = testString.Substring(0, testString.LastOrDefault(testString.Last(char.IsNumber))+1);
答案 2 :(得分:1)
有很多方法可以用来实现这一目标。这是一个简单的代码片段:
string src = "ABCD1234A_BC";
string search = "0123456789";
int pos = src.LastIndexOfAny(search.ToCharArray());
string dst = src.Remove(pos+1);
答案 3 :(得分:0)
你走了:
public string StripAfterLastNumber(string input)
{
//+1 because index is zero based
int charsToTake = input.LastIndexOf(input.Last(c => char.IsNumber(c))) + 1;
return input.Take(charsToTake).ToArray;
}
它查找输入中最后一个数字字符的位置,并将输入返回到该点。
答案 4 :(得分:0)
创建一个字符串的扩展方法,如下所示:
public static class StringExtensions
{
public static string RemoveExcessTextAferLastDigit(this string str)
{
//find the last index in the str of any number
int lastIndex = str.LastIndexOfAny("1234567890".ToCharArray());
return lastIndex > -1 ? str.Substring(0, lastIndex + 1) : str;
}
}
这将允许您调用您的扩展名,就像它是字符串类的原生一样:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = textBox1.Text.RemoveExcessTextAferLastDigit();
}
这通过了你的测试。
干杯,
CEC
答案 5 :(得分:0)
您可以使用正则表达式
public string strip(string s)
{
return new Regex(@"^[\d\D].*\d").Match(s).ToString();
}