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"]
我在用 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"]