使用子字符串使用C#重命名多个文件名

时间:2016-08-22 15:13:15

标签: c#

我需要重命名多个CSV文件名。我想删除“ - ”之后的所有内容,例如“File-1.csv”将变为“File.csv”。这是我的代码不起作用:

DirectoryInfo d = new DirectoryInfo(@"C:\folder");
FileInfo[] infos = d.GetFiles();
foreach (FileInfo f in infos)
{
    File.Move(f.FullName, f.FullName.ToString().Substring(0, f.LastIndexOf('-')));
}

我收到了这个错误:

  

错误2'System.IO.FileInfo'不包含'LastIndexOf'的定义,并且没有可以找到接受类型'System.IO.FileInfo'的第一个参数的扩展方法'LastIndexOf'(你是否错过了使用指令或程序集引用?)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您当前的代码无法编译,因为当您在.LastIndexOf()上调用FileInfo对象时,您正在FileInfo.FullName对象上调用foreach (FileInfo f in infos) { // Get the extension string from the existing file var extension = f.FullName.Substring(f.FullName.LastIndexOf('.'), f.FullName.Length - 1); // Get the filename, excluding the '-' as well as the extension var filename = f.FullName.SubString(0, f.FullName.LastIndexOf('-')); // Concatenate the filename and extension and move the file File.Move(f.FullName, String.Format("{0}{1}", filename, extension)); } 。您的子字符串也会从文件名字符串中删除扩展名,我认为您并不想要。这是一个保留扩展名的解决方案:

    $(".js-data-example-ajax").select2({
  ajax: {
    url: "http://localhost:8081/pruebas/select2/examples/jsondata.php",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      return {
        q: params.term, // search term
        page: params.page
      };
    },
    processResults: function (data, params) {
      params.page = params.page || 1;
      return {
        results: data.items,
        pagination: {
          more: (params.page * 30) < data.total_count
        }
      };
    },
    cache: true
  },
  escapeMarkup: function (markup) { return markup; }, 
  minimumInputLength: 1,
});

答案 1 :(得分:0)

  

我收到此错误:

     

错误2&#39; System.IO.FileInfo&#39;不含   &#39; LastIndexOf&#39;

的定义

f不是字符串;尝试f.FullName.LastIndexOf ...