C# 替换古怪

C# Replacing weirdness

我在用 C# 替换时遇到了一个烦人的问题。 我有一个数组,其中包含我应该替换的字母:

string[] replaceLines = format.Replace("\n", "").Split(new char[] { '=', ',' });

这基本上是一个拆分为数组的文件输出

接下来有这个循环:

for (var i = 0; i < replaceLines.Length - 1; i = i + 2)
        {
            json = Regex.Replace(json, replaceLines[i], replaceLines[i + 1]);
        }

根据JS

应该替换吧

function replace() {
    let area1 = document.querySelector("#text1").value;
    let area2 = document.querySelector("#text2").value.replaceAll("\n", "").split(/[=,]/g);
console.log(area2);
    for(let i = 0; i < area2.length - 1; i = i + 2) {
        area1 = area1.replaceAll(area2[i], area2[i + 1]);
    }
    document.querySelector("#text1").value = area1;
}
<!DOCTYPE html>
<html>
    <head>
        <title>BB+ sheeesh</title>
        <meta charset="utf-8">
        <link rel="shortcut icon" href="atom.io/favicon.ico">
        <link rel = "stylesheet" href="style.css">
        <style>
            table {
                color:deepskyblue
            }
            </style>
    </head>
    <body>
        <script src="script.js"></script>
        <h1>Input</h1>
        <textarea id="text1" cols="160" rows="12"></textarea>
        <h1>Replace pattern (example: n=r, and new line, if adding more)</h1>
        <textarea id="text2" cols="160" rows="12"></textarea>
        <br>
        <button onclick="replace()">Change</button>
    </body>
</html>

你能帮我用 C# 重写这个东西吗? 我不知道该怎么办,我也试过了string.Replace

您在 C# 中看到的问题的潜在原因是您的行结尾。在 windows 它们不会是 "\n" 它们可能会是 "\r\n" 所以我建议使用 Environment.NewLine 因为它会自动适应你的环境 运行上。

此外,除非您想要在替换交换 Regex.Replace() 中解析正则表达式,并在循环中使用 "string".Replace()。 Regex 可能会执行您希望它执行的操作,但从外观上看,Regex 引擎并不是必需的。

我还要注意,这似乎是 bare-bones 替换脚本。验证您的模式字符串是明智的。

它是如何写的,你可能会无意中替换项目,例如,如果你使用 a=b,b=c,所有 a 将变成 c,你将被留下没有 b

另一个假设是每个替换对之间将有一个逗号分隔,如果您有这样的配对也是如此:

@"a=b
c=d"

你的数组最终会变成 ["a","bc,"d"] 而不是:["a","b","c","d"]