【问题标题】:Regex replacing only specific set of characthers正则表达式仅替换特定的字符集
【发布时间】:2017-03-09 13:36:07
【问题描述】:

我有这样的字符串:

Small Bubble Roll 3/16" x 1400' x 12" Perforated 3/16 Bubbles 1400 Sq Ft Wrap

注意标志:

"

and

'

我想用这样的单引号替换这些:

'

我试过这个正则表达式:

Regex.Replace(inputText, @"(\s+|"|')", "'")

但我得到的结果不是我想要的......我怎样才能只删除带有单引号的特定字符集,就像我上面显示的那样?

编辑,这是输入:

Small Bubble Roll 3/16" x 1400' x 12" Perforated 3/16 Bubbles 1400 Sq Ft Wrap

【问题讨论】:

  • 删除\s+| 你正在替换所有的空格。
  • 我玩过regexr.com/3fg54 - 我认为你只需要转义一些特殊字符 - 希望这会有所帮助
  • @Gunnar 由于某种原因我无法复制整个表达式,您能把它粘贴到这里吗? XD
  • @User987 这不是 C# 特定的,只是一些纯正则表达式,可能类似于 s/(\&quot\;|\')/'/g
  • 我怀疑您的输入不是您发布的内容。在正则表达式替换之前解码文本。如果它包含实体,"|' 正则表达式将起作用。

标签: c# asp.net regex asp.net-mvc razor


【解决方案1】:

您不需要替换空格,因此您的模式应该是:

@"("|')"

在代码中(你也应该将结果存储在一些变量中):

var str = "Small Bubble Roll 3/16" x 1400' x 12" Perforated 3/16 Bubbles 1400 Sq Ft Wrap";
var res = Regex.Replace(inputText, @"("|')", "'")

另外,您可以不使用正则表达式进行替换:

var str = "Small Bubble Roll 3/16" x 1400' x 12" Perforated 3/16 Bubbles 1400 Sq Ft Wrap";
str = str.Replace(""", "'");
str = str.Replace("'", "'");

【讨论】:

  • 试过了,也不起作用,输出保持不变:/
  • @User987,代码运行正常,我已经测试过了。你期待什么结果?我得到"Small Bubble Roll 3/16' x 1400' x 12' Perforated 3/16 Bubbles 1400 Sq Ft Wrap"
  • @User987,你能解释一下为什么这段代码不适合你吗?
  • @User987,两种解决方案有效并产生所需的结果。我不知道你为什么接受另一个答案,因为有" 而不是'。但是好的,如果它对你有用,那就太好了
  • @User987,你不应该接受我的回答,它不适合你,它适合我,请接受解决了你问题的回答
【解决方案2】:

您可以使用System.Net 中的WebUtility.HtmlDecode 方法。

var result = WebUtility.HtmlDecode("Small Bubble Roll 3/16" x 1400' x 12" Perforated 3/16 Bubbles 1400 Sq Ft Wrap");

结果输出:

小气泡卷 3/16" x 1400' x 12" 穿孔 3/16 气泡 1400 平方英尺包装

【讨论】:

  • 这确实有效,但现在我只剩下这个:\" 和 \' ...我现在如何删除转义字符?
  • 您在调试器中查看结果吗?它会显示转义的语音标记。如果您实际上在标签中的任何位置使用此字符串或将其输出到文件中,则不会有转义。忽略调试器。
  • Equalsk,是的,我实际上正在查看调试器 =D ...我将值存储在 DB 中...等等,当它存储在 DB 中时,看看它以另一种形式输出的内容跨度>
猜你喜欢
  • 2011-04-12
  • 2014-05-05
  • 1970-01-01
  • 2021-08-25
  • 2021-12-19
  • 2021-03-26
  • 2022-08-19
  • 2021-11-20
  • 1970-01-01
相关资源
最近更新 更多