字符串修剪。从最后删除最后一个字符

时间:2013-09-17 08:47:20

标签: c# string trim

有一点问题。 我有这些字符串

[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"

4 个答案:

答案 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( '')