首先在"_"之后修剪文件名中的所有字符

Dou*_*oug 0 c# string

我想修剪这些采购订单文件名(下面的几个例子),以便省略第一个"_"之后的所有内容.

INCOLOR_fc06_NEW.pdf保留:INCOLOR(将此作为VendorID写入db)删除:_fc08_NEW.pdf

NORTHSTAR_sc09.xls保留:NORTHSTAR(将此写入db作为VendorID)删除:_sc09.xls

我们的场景:管理人员正在将这些文件上传到我们的Intranet Web服务器,以使其可供下载/查看等.我正在使用Brettles NeatUpload,对于每个上传的文件,我将文件属性写入PO表(sql 2000).文件名的第一部分将作为VendorID写入DB.

这些文件的命名约定是一致的,因为文件的第一部分始终是供应商名称(或供应商ID),后跟"_",然后是其他不可预测的字符,用于标识采购订单的类型,然后是文件扩展 - 它始终是.xls,.XLS,.PDF或.pdf.

我尝试了TrimEnd - 但是你必须提供的字符数组最终会很长并且可能与我想要保留的文件名部分冲突.我有一种感觉,我没有正确使用TrimEnd.

使用string.TrimEnd(或C#中的任何其他字符串操作)的最佳方法是在第一个"_"之后删除所有字符?

Bab*_*fas 5

String s = "INCOLOR_fc06_NEW.pdf";
int index = s.IndexOf("_");

return index >= 0 ? s.Substring(0,index) : s;
Run Code Online (Sandbox Code Playgroud)

  • 在使用Substring()之前检查索引是件好事,但是你要返回他想要修剪的部分,而不是初始部分.更好地使`return index> = 0?s.Substring(0,index-1):s;` (2认同)
  • 这将返回OP要删除的部分.你应该使用s.Substring(0,index)代替. (2认同)