【问题标题】:Parse text file to DGV, need to replace more then 1 consecutive periods将文本文件解析为 DGV,需要替换超过 1 个连续句点
【发布时间】:2014-05-10 01:53:04
【问题描述】:

我正在解析一个文本文件并将其导入数据网格视图。文件是这样设置的:

number 1 .......... 845.6
number 2 .......     0.0001
col 1       col 2      col 3
1.233       4.55       1000

我需要将这些值输入到 DGV 中,然后我可以将它们插入到 Excel 模板中。除了一条线,我什么都可以工作。 “数字 1”行最终都在一个单元格中。我会解释为什么。

我使用以下代码来处理每一行,并首先从数据中创建一个 csv。

TextLine = Regex.Replace(TextLine, " {2,}", "  ")
TextLine = Replace(TextLine, "  ", ",")

由于文件中的数据在每一行上由一个以上的连续空格分隔(“数字 1”除外),我可以用逗号替换每个出现的地方,我得到了很好的结果。我试图做的是用空格替换连续的句点,以便将“数字 1”与值分开。

我尝试了一些方法:

TextLine = Regex.Replace(TextLine, "(.)\1{2,}", "  ")
TextLine = Regex.Replace(TextLine, ".{2,}", "  ")

前一个有效,但也明显摆脱了其他连续的字符。我也不能只删除句点,因为有些数字有小数。我在想解决方案可能在该函数中使用“Chr(46)”,但我似乎无法使其工作。

【问题讨论】:

    标签: regex vb.net parsing replace


    【解决方案1】:

    您需要用反斜杠转义点,使其没有特殊含义。

    看起来这就是你想要的:

    Dim textLine As String = "number 1 .......... 845.6"
    textLine = Regex.Replace(textLine, "\.{2,}", ",")
    Console.WriteLine(textLine) ' outputs "number 1 , 845.6"
    

    或者Regex.Replace(textLine, "\.{2,}", " ") 用空格替换两个或多个连续点。

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      相关资源
      最近更新 更多