【问题标题】:line breaks based on sequence of characters基于字符序列的换行符
【发布时间】:2012-11-08 07:14:43
【问题描述】:

我在一个文本文件中有几行参数,这些参数可以分布在多行中。它们由一系列字符终止(实际的换行符),这些字符也可以分布在多行或包含空格,如以下三个(非详尽)示例:

< x >

< x 
  > 

<   x >

我想整理一下这个文本文件,以便真正解析它。输出应该是这样的(P1 ... P3 是参数):

P1 P2 P3 < x >
P1 P2 P3 < x >
P1 P2 P3 < x >

原文:

P1 P2 P3 < x   >

P1 P2    P3 < x 

>
P1 P2 

P3 < 
x >

【问题讨论】:

  • 你试过什么?格式总是一样的吗?你能举个例子吗?是不是像“1 a6 三 ”?
  • 顺序总是一样的。

标签: c# .net regex


【解决方案1】:

您应该使用简单的lexical analyzer 就可以了。

查看之前的一些 SO 问题:

【讨论】:

    【解决方案2】:

    嗯,一个非常转储的方法会遍历它,像这样逐个字符:

      var output = new List<string>(); // this holds the parameter lines
      var line = string.Empty;
      foreach (var c in str) // str holds the input string
      {
        if (c == '\n' || c == '\r') continue;
    
        line += c;
        if (c == '>')
        {
          output.Add(line);
          line = string.Empty;
        }
      }
    

    你仍然需要进行格式化等等,但我希望你能明白......

    【讨论】:

    • 谢谢。这就是我尝试过的那种东西。问题在于它不仅仅是 > 而是一系列字符(以及它们的不同组合) - 请参阅原始问题。
    • @csetzkorn 这就是为什么我要一个真实的例子。告诉我在什么情况下我的代码不起作用。给我们一些数据 :-) 对于您提供的格式,它确实有效。
    • 条件=数据在问题中。 “换行符”是 或它的组合 NOT >。见问题。
    • 好的,抱歉,我以某种方式误解了这个问题。然后你必须摆脱换行符并用实际的换行符分割字符串,例如。 “”。由于 qstebom 能够提供有用的答案,我不会更新我的帖子:)
    • 谢谢。这就是我所做的。处理 的所有“组合”仍然存在挑战(见问题)。
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2018-03-31
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多