【问题标题】:string.Replace() searching for string + ANY CHAR + stringstring.Replace() 搜索字符串 + ANY CHAR + 字符串
【发布时间】:2015-06-19 21:11:24
【问题描述】:

我正在搜索一个巨大的 .json 文件,并尝试替换文本。这是我正在处理的确切情况。

string json = (a json file string of text)
string result = null;
result = json.Replace("\"$id\":\"7\",\"QuestionNumber", "REPLACMENT TEXT");

我想搜索整个 json 文件并用 REPLACMENT TEXT 替换每个出现的地方。但是,我想在整个文件中搜索

"\"$id\":\"7\",\"QuestionNumber"

除了数字“7”之外,它还可以是任何数字。我知道我需要使用正则表达式,但我是正则表达式的新手,我不确定如何将正则表达式的内容传递给 string.Replace 参数。

这里还有一个主要的警告,我还需要在“REPLACEMENT TEXT”字符串中添加“7”,但每次替换恰好是任何数字。

【问题讨论】:

  • 使用正则表达式,有一个Regex.Replace方法:msdn.microsoft.com/de-de/library/…
  • 你可以使用(-??\d*\.\d*)而不是数字7 \d* 这里是Regular Expressions 的一个很好的参考
  • 这个 json 是结构化的吗...也许引入 C# 对象并在其上使用 LINQ 会更容易、更快。
  • 好的,所以我想要任何正整数。但我还需要保存 ANY POSITIVE INT 的任何内容,以便我可以将其放入替换文本中。我该怎么做??

标签: c# regex json string


【解决方案1】:

使用Regex.Replace()

//using System.Text.RegularExpressions;
Regex regex = new Regex("\"\\$id\":\"(\\d+)\",\"QuestionNumber");
string result = regex.Replace(json, "REPLACEMENT TEXT $1");

这应该会变成这样的文字

"$id":"8","QuestionNumber
"$id":"3","QuestionNumber

进入

REPLACEMENT TEXT 8
REPLACEMENT TEXT 3

【讨论】:

  • 感谢您的帮助。我认为这正是我正在寻找的,但我在 (\d) 中的 'd' 上遇到了无法识别的转义序列错误。我试着把 (\\d) 代替,但我认为这不起作用..
  • 哦,是的,哎呀...应该是\\d。不过那应该可以。再试一次。
  • 仍然无法正常工作,但我会继续胡思乱想。谢谢您的帮助。只是为了确定, (\\d+) 应该是传递给正则表达式对象的字符串的一部分,对吗?
  • @kdeez (\\d+) 是捕获的组,这意味着在替换文本中$1 将被替换为它。
  • 可能是正则表达式字符串中“id”之前的“$”正在扔掉东西吗?我实际上想在搜索字符串中包含 $ 字符。所以我正在寻找文本“$id.......”,而不仅仅是“id......”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 2014-03-26
  • 2016-11-30
相关资源
最近更新 更多