【问题标题】:Replacing unknown text between " " with #用#替换“”之间的未知文本
【发布时间】:2013-12-31 20:41:39
【问题描述】:

我目前有一个大文本文件,我正在尝试用 # 替换 "" 内任何内容之间的未知文本。我试过用:

 string text = File.ReadAllText(@"c:\Users\Zero\Documents\test.txt");
    string replacement = "#";


        int start = text.IndexOf('"') + 1;
       text = text.Replace(text.Substring(start, text.LastIndexOf('"') - start), replacement);


    File.WriteAllText(@"c:\Users\Zero\Documents\test.txt", text);

目前它正在用一行替换文件中的所有文本。换句话说,它正在转向:

你好,“测试”怎么样

这是一个测试“123”测试

“测试”“测试”

进入

“#”

我需要它来做这个

你好吗“#”

这是一个测试“#”测试

“#”“#”

【问题讨论】:

    标签: c# text replace


    【解决方案1】:

    这样的regular expression 会派上用场:

    "[^"]*"
    

    例如:

    text = Regex.Replace(text, "\"[^\"]*\"", "\"#\"");
    

    【讨论】:

    • 最简单的解决方案..句号!
    • 哇,你太棒了。感谢你们对我的帮助。我一直在循环运行,我正在尝试构建东西,你让它变得超级简单。
    • @CandyCane 提个醒:如果正则表达式特别复杂或者您正在处理非常大的字符串,它们可能会很慢。这里似乎都不是这种情况,但您可能需要阅读Best Practices for Regular Expressions in the .NET Framework 以获得良好的衡量标准。
    • 是的,我将使用一个大文件。我也开始认为我可能会遇到问题,因为我的大多数字符串都是“http:\\”变体。
    • @CandyCane 这种模式很简单,但我怀疑即使是大文件也会成为问题。您可以一次处理一行文件,因此您不必一次将整个文件存储在内存中,但是,如果这是一个问题,您最好使用流或 TextReader / TextWriter 解决方案。先试试看,如果有任何问题,请告诉我。
    猜你喜欢
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 2012-12-07
    • 2013-12-05
    相关资源
    最近更新 更多