替换为文件的多行中的多个字符串

时间:2017-12-08 05:05:04

标签: .net vb.net for-loop

我有一个包含六行的文件,如下所示:

 a1
 b1
 c1
 d1
 e1
 f1

要求是,输出需要如下。简单地说,上面的行中的小写字母需要用“AA”和“AB”代替,每次三次。

AA1
AA1
AA1
AB1
AB1
AB1

我一直在使用以下代码来实现这一目标:

For each line in File.ReadLines(path)
    For i as integer = 1 to 3
        fOut.WriteLine(Regex.replace(line, regex, replacementString(matchCount)))
    Next
Next

函数replacementString(matchCount)返回“AA”或“AB”,具体取决于传递的参数。 我使用“for”循环迭代替换String(AA或AB)三次。但是,随着替换字符串,该行也被三次循环,并被写入文件三次。我没有得到六行作为输出,而是输出了18行。

我无法解决如何使内部for循环仅针对replacementString()而不是针对该行执行。我是编程新手,想知道是否有办法实现这一点。

以上代码只是举例说明我的问题。在实际情况中,我在一个文件中面对数百行的问题,需要用AA ..... ZZ代替。我无法发布我的原始代码。

1 个答案:

答案 0 :(得分:0)

你不能用这种方式交织两个For循环。构造类似这样的东西的最简单方法是通过循环“手动”进行内部循环的循环:

Dim i as Integer = 0
For Each line in File.ReadLines(path)
    fOut.WriteLine(Regex.replace(line, regex, replacementString(i + 1)))
    i = (i + 1) Mod 3
Next

注意:我假设matchCounti实际上是您实际代码中的相同变量。我没有看到你的代码如何有意义。

相关问题