0

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

[14]: "Care_CAR_3RD_DAY_201309177438417"
[15]: "Care_201309177438417"
[16]: "New_Care_201309177438417"
[17]: "SMS_New_Care_20130917"

这是每天生成的文件列表,我想删除最后的数字,以便能够将每个文件名与数据库中的记录进行比较以执行特定操作。此外,最后的数字并不总是相同的大小。结果将是

[14]: "Care_CAR_3RD_DAY"
[15]: "Care"
[16]: "New_Care"
[17]: "SMS_New_Care"
4

4 回答 4

7
string test = "Care_CAR_3RD_DAY_201309177438417";
test = test.Remove(test.LastIndexOf('_'));

如果您不确定是否有“_”,则可以检查它:

test = test.IndexOf('_') > -1 ? test.Remove(test.LastIndexOf('_')) : test;
于 2013-09-17T08:49:11.473 回答
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
于 2013-09-17T08:56:27.230 回答
0

您可以使用正则表达式。

  var newString = Regex.Replace(inputString, @"\d*", string.empty);


Input: Care_CAR_3RD_DAY_201309177438417
Result: Care_CAR_3RD_DAY_
于 2013-09-17T08:55:03.600 回答
0

这就是我设法解决它的方法

fname.Replace(fname.Split(' ').Last(),"").TrimEnd(' ')

于 2013-09-17T11:11:49.513 回答