我所拥有的是一个C#windows应用程序,它读取一堆SQL表并根据结果创建一堆查询。我遇到的一个小问题是我的查询中的最终“,”
这就是我所拥有的
ColumnX,
from
我需要读取整个文件,准确写出文件中的内容,然后在from之前替换最后一个文件。
我试过了.replace(@",\n\nfrom),(@"\n\nfrom)
,但它找不到它。任何帮助表示赞赏。
示例:
ColumnX,
from
结果:
ColumnX
from
答案 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)
您可以尝试两种解决方案:
@
符号,因为这意味着它将查找\n
的文字字符,而不是换行符。.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”);