【问题标题】:Removing Sub-string with some pattern from a string从字符串中删除具有某种模式的子字符串
【发布时间】:2014-04-15 20:00:40
【问题描述】:

我有一个类似 JSON 格式的字符串:

XYZ DIV 参数:width=\"1280\" height=\"720\", session=\"1\"

现在我想从这个字符串中删除width=\"1280\" height=\"720\"

注意:1280和720可以用任意数字代替,所以不能直接用null代替。

请告诉我如何解决?通过正则表达式或任何其他可能的更好方法。

【问题讨论】:

  • 你能给我们一个更真实的输入字符串的例子吗?
  • 如果其中一个答案对您有帮助,请务必批准它,以便以后其他人可以看到哪个答案对您最有帮助。它为那些花时间回答的人提供了更多的帮助:)每个人都喜欢虚假的互联网积分。

标签: c# asp.net .net regex string


【解决方案1】:

正则表达式替换为空字符串:

(width|height)=\\"\d+\\"

正则表达式可视化:

代码:

string input = @"XYZ DIV Parameters: width=\""1280\"" height=\""720\"", session=\""1\""";
string output = Regex.Replace(input, @"(width|height)=\\""\d+\\""", string.Empty);

【讨论】:

  • +1,您处理正则表达式的width|height 部分的方式非常干净!我什至没有想到这一点。太棒了!
  • 正是我正在寻找并智能实现的解决方案。谢谢。 :)
【解决方案2】:

您可以使用以下正则表达式进行查找和替换:

width=\\"\d*+\\" 替换为空字符串,height=\\"\d*+\\" 替换为空字符串。

这将删除width=\"XYZ\" 的整个文本,如果您只想替换数字或空白数字,您可以用适合您需要的字符串替换(例如width=\"\"

如果您可以保证宽度和高度始终采用该格式并且始终以空格分隔,那么您可以使用width=\\"\d*+\\" height=\\"\d*+\\" 将其组合成一个更大的正则表达式查找/替换。


关于正则表达式的更多解释,以便您带走一些东西,而不仅仅是快速修复:) width=\\"\d*+\\" 分解为:

  1. width= 非常简单,只需找到您要查找的文本即可开始删除。
  2. \\" 因为\ 是正则表达式中的一个特殊字符,你必须对其进行转义,然后" 字符可以像往常一样跟随它。
  3. \d*+ 数字 \d,零个或多个 *,然后是非贪婪的 +。这里重要的部分是数字的非贪婪。如果您将其关闭,您的正则表达式将查找并使用数字,直到找到最后一个 "。在您的情况下不需要 100%(因为高度正在缓冲),但它仍然更安全。
  4. \\" 结束正则表达式

【讨论】:

  • 感谢 Walls 提供这么好的信息。我实际上是在标记@Ulugbek 的答案,因为它给出了准确的代码。但是没有你的这个信息,我无法理解。如果您的回答允许的话,我可能会做更多的 +1 :)
  • @Ulugbek 的答案可能是最好的答案。他提供了一些您可以使用的实际代码。我更倾向于理论和解释。我不需要支票,我只是想确保人们得到他们需要的东西并且正在学习。我也从他的回答中学到了一些东西,所以我同意:)
  • 这真的很棒@Walls。 SO 有像您一样相信尽可能多地给予和获取知识的人,这就是为什么它是最好的知识共享网站。 :)
【解决方案3】:

这样就可以了:

string resultString = null;
try {
    Regex regexObj = new Regex(@"^(.*?)width=\\"".*?\\"" height=\\"".*?\\""(.*?)$", RegexOptions.IgnoreCase);
    resultString = regexObj.Replace(subjectString, @"$1width=\""\"" height=\""\""$2");
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 2014-10-31
    • 2018-04-15
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多