【问题标题】:Im using console application in console window i see each line twice why?我在控制台窗口中使用控制台应用程序我看到每行两次为什么?
【发布时间】:2011-10-06 19:07:44
【问题描述】:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int y;
            FileInfo fi;
            string[] newDest_files;
            string[] lines = global::EachFileDirectory.MyResource.video_formats.Split    (new Char[] {'\r','\n'});
            foreach (string line in lines)
            {
                newDest_files = Directory.GetFiles(Environment.CurrentDirectory,         line); //strFilter );
                for (y = 0; y < newDest_files.Length; y++)
                {
                    fi = new FileInfo(newDest_files[y]);
                    string newFolder = Path.Combine(fi.DirectoryName, fi.Name                 + "_Directory");
                    if (!Directory.Exists(newFolder))
                        Directory.CreateDirectory(newFolder);
                    Console.WriteLine("processed: " + line.Length + " files");
                    File.Move(fi.FullName, Path.Combine(newFolder, fi.Name));
                }
                if (newDest_files.Length == 0)
                {
                    Console.WriteLine(line + "No files found in the current directory      of format: ");
             }
        }
        Console.WriteLine("\n Done! Press any key to exit...");
        Console.ReadKey();         
    }
}

}

问题是当我添加以下行时:string[] lines = global::EachFileDirectory.MyResource.video_formats.Split(new Char[] {'\r','\n'});

从那时起,我在控制台窗口中看到所有行都加倍,例如:

*.264 在当前目录中找不到文件格式: 在格式的当前目录中找不到文件: *.mov 在当前目录中没有找到格式的文件: 格式的当前目录中没有找到文件:

我需要在控制台窗口中看到的是:

*.264 在当前目录中找不到文件格式: *.mov 当前目录下没有找到格式的文件:

等等,但因为我有这条线: string[] lines = global::EachFileDirectory.MyResource.video_formats.Split(new Char[] {'\r','\n'}); 还有代码最后一行:Console.WriteLine(line + "No files found in the current directory of the format:");

我看到没有文件在当前目录中找到格式:也在每一行之间。

我该如何解决?

在项目的参考中,我添加了一个文本文件,其中包含许多视频格式扩展:

*.264 *.mov *.avi

等等……

问题是文本:No files found in the current directory of format: 出现在每种格式附近以及两种格式之间,我希望 ti 仅在每种格式附近出现在控制台窗口中!

非常感谢。

【问题讨论】:

  • 我很头疼,想弄清楚你想做什么

标签: c#


【解决方案1】:

StringSplitOptions.RemoveEmptyEntries 添加到Split 方法:

string[] lines = global::EachFileDirectory.MyResource.video_formats.Split(new Char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

【讨论】:

    【解决方案2】:

    你正在分裂\r \n - 这意味着你正在输入类似的东西

    "foo\r\nbar"
    

    进入:

    { "foo", "", "bar" }
    

    ...所以您随后尝试查找所有具有 empty 模式的文件。

    有多种选择:

    • 创建StringReader 并多次调用ReadLine 而不是使用Split
    • 拆分前将\r替换为空字符串
    • 拆分只是 \n,然后修剪每个条目
    • 拆分后指定StringSplitOptions.RemoveEmptyEntries

    【讨论】:

      猜你喜欢
      • 2019-01-18
      • 1970-01-01
      • 2011-04-20
      • 2014-02-17
      • 1970-01-01
      • 2010-10-20
      • 2016-03-30
      • 2019-01-30
      • 1970-01-01
      相关资源
      最近更新 更多