C#读取文件并写出替换字符串

时间:2010-03-23 13:02:03

标签: c#

我所拥有的是一个C#windows应用程序,它读取一堆SQL表并根据结果创建一堆查询。我遇到的一个小问题是我的查询中的最终“,”

这就是我所拥有的

ColumnX,

from

我需要读取整个文件,准确写出文件中的内容,然后在from之前替换最后一个文件。

我试过了.replace(@",\n\nfrom),(@"\n\nfrom),但它找不到它。任何帮助表示赞赏。

示例:

ColumnX,

from

结果:

ColumnX

from

5 个答案:

答案 0 :(得分:7)

换行符很可能是两个字符组合CR + LF:

.replace(",\r\n\r\nfrom","\r\n\r\nfrom")

如果您想要当前系统的换行符,可以使用Environment.NewLine常量:

.replace(","+Environment.NewLine+Environment.NewLine+"from",Environment.NewLine+Environment.NewLine+"from")

请注意,字符串前面的@表示它不使用反斜杠转义序列,但另一方面它可以包含换行符,因此您可以用这种有点令人困惑的方式编写它:

str = str.replace(@",

from", @"

from");

答案 1 :(得分:2)

您可以尝试两种解决方案:

  1. 删除@符号,因为这意味着它将查找\n的文字字符,而不是换行符。
  2. 尝试.replace("," + Environment.NewLine + Environment.NewLine + from, Environment.NewLine + Environment.NewLine + "from)

答案 2 :(得分:1)

在读取文件时,最好在文件写入之前将其删除,而不是替换或删除逗号。这样你只需要打扰逻辑一次。在构建列列表时,只需在创建列表后删除最后一个逗号。希望您处于可以控制该过程的位置。

答案 3 :(得分:1)

如果您可以假设您始终要删除最后一次出现的逗号,则可以使用字符串函数LastIndexOf查找最后一个逗号的索引,并从那里使用Remove

myString = myString.Remove(myString.LastIndexOf(","), 1);

答案 4 :(得分:0)

使用正则表达式怎么样?这会更好地处理不同形式的换行吗?

var result = Regex.Replace(input,@“,(\ n *)from”,“$ 1 from”);