【问题标题】:Normalizing text file from abnormal newlines?从异常换行符规范化文本文件?
【发布时间】:2012-05-21 06:21:32
【问题描述】:

我有几个文本文件,在我想规范化的文本之间有很多换行符,但是文本之间的换行符没有规律,例如:

Text




Some text








More text




More

more

所以我想在换行符的数量大于 X 到 Y 的地方进行更改,所以假设当有 5 个连续换行符时,它变为 2,10 变为 3。

我目前的问题是我不知道我应该如何确定我必须规范化哪些行。

我知道我可以使用拆分来计算新行,以及其他方法,例如验证行是否为空等...但也许有一个简单的正则表达式或更好的方法来解决这个问题?

【问题讨论】:

    标签: c# .net-4.0 newline normalization text-normalization


    【解决方案1】:
    List<string> Normalize(string fileName, int size)
    {
        List<string> result = new List<string>();
        int blanks = 0;
    
        foreach (var line in File.ReadAllLines(fileName))
        {
            if (line.Trim() == "")
            {
                if (blanks++ < size)
                    result.Add("");
            }
            else
            {
                blanks = 0;
                results.Add(line);
            }
        }
        return line;
    }
    

    【讨论】:

    • 注意:不要打开我的开发环境,所以有些功能可能是错误的。不过,希望你能明白
    • 做了一些改变,但你的想法很适合我的需要,非常感谢。
    【解决方案2】:

    这是一种方法

    string sText = File.ReadAllText(@"c:\file.txt");
    sText = removeLines(sText);
    
    public string removeLines(string sData) {
                string[] sArray = sData.Split(sDelim, 
                                              StringSplitOptions.RemoveEmptyEntries);
                StringBuilder builder = new StringBuilder();
                foreach (string value in sArray)
                {
                    builder.Append(value);
                    builder.Append("\r\n");
                }
                return builder.ToString();
    }
    

    或使用正则表达式的单行:

    string sText = File.ReadAllText(@"c:\file.txt");
    sText = Regex.Replace(sText, "[\r\n]+", "\n");
    

    【讨论】:

    • 它们不是\r\n,它们是简单的连续\n,我只想在它们超过一定连续数量的新行时删除,就像我提到的那样,我不是正则表达式的专业人士,但会做像[\n]+{,3} 这样的东西可以锻炼吗?
    猜你喜欢
    • 2011-11-14
    • 2013-01-14
    • 2012-09-17
    • 2017-03-11
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2012-05-05
    • 2012-05-04
    相关资源
    最近更新 更多