有一点问题。 我有这些字符串
[14]: "Care_CAR_3RD_DAY_201309177438417"
[15]: "Care_201309177438417"
[16]: "New_Care_201309177438417"
[17]: "SMS_New_Care_20130917"
这是每天生成的文件列表,我想删除最后的数字,以便能够将每个文件名与db中的记录进行比较,以执行特定操作。最后的数字也不总是相同的大小。 结果将是
[14]: "Care_CAR_3RD_DAY"
[15]: "Care"
[16]: "New_Care"
[17]: "SMS_New_Care"
答案 0 :(得分:8)
string test = "Care_CAR_3RD_DAY_201309177438417";
test = test.Remove(test.LastIndexOf('_'));
如果您不确定是否有'_',那么您可以检查它:
test = test.IndexOf('_') > -1 ? test.Remove(test.LastIndexOf('_')) : test;
答案 1 :(得分:1)
虽然jyparask的回答是有效的但如果输入类似 Care_CAR_3RD_DAY201309177438417 ,则会失败。
安全的方法是
string test = "Care_CAR_3RD_DAY_201309177438417";
test = test.TrimEnd(new char[]{'_','0','1','2','3','4','5','6','7','8','9'});
//output Care_CAR_3RD_DAY
test = "Care_CAR_3RD_DAY201309177438417";
test = test.TrimEnd(new char[]{'_','0','1','2','3','4','5','6','7','8','9'});
//output Care_CAR_3RD_DAY
答案 2 :(得分:0)
您可以使用Regex。
var newString = Regex.Replace(inputString, @"\d*", string.empty);
Input: Care_CAR_3RD_DAY_201309177438417
Result: Care_CAR_3RD_DAY_
答案 3 :(得分:0)
这就是我设法解决它的方法
fname.Replace(fname.Split( '')。最后(), “”)。TrimEnd( '')