无法在 C# 中使用 Regex.Unescape 删除转义序列
Posted
技术标签:
【中文标题】无法在 C# 中使用 Regex.Unescape 删除转义序列【英文标题】:Unable to remove Escape sequences using Regex.Unescape in C# 【发布时间】:2021-10-19 22:53:51 【问题描述】:我想从 Pokemon API 获得的以下字符串中删除所有转义序列。
“一粒奇怪的种子\n在出生时\n种在它的背上。\f植物发芽\n并与\n这只 POKéMON 一起生长。”
我使用过Regex.Unescape("A strange seed was\nplanted on its\nback at birth.\fThe plant sprouts\nand grows with\nthis POKéMON.")
,但得到的是相同的字符串。
输出
你能帮我解决这个问题吗?
我不想进行字符串替换,因为在下一次 API 调用中转义序列可能会有所不同。
【问题讨论】:
您的原始字符串不包含任何转义字符。它包含换行符,在字符串文字中转义为\n
,然后由调试器转义。但该字符串实际上并不包含任何反斜杠。
感谢您的评论。这个换行符实际上破坏了我的 Uri.EscapeUriString()。基本上,我需要将此字符串作为查询字符串参数发送到funtranslations.com/api/shakespeare#translate。 Uri.EscapeUriString(当然,您得到的是相同的字符串 - 您的示例中没有转义字符 :)
字符串 literal 有转义字符,但这些字符本身并不存在。当即时窗口打印出结果时,它会将其显示为字符串文字本身。例如,您从 Console.WriteLine
之类的东西中获得的信息是不一样的。
【讨论】:
感谢您的评论。这条线实际上打破了我的 Uri.EscapeUriString()。基本上,我需要将此字符串作为查询字符串参数发送到 funtranslations.com/api/shakespeare#translate。 Uri.EscapeUriString(您可以使用regex replace 并拥有一组可能的转义序列(如 \n 和 \t 等)
(更新)示例:https://rextester.com/WXSC17170
【讨论】:
这个正则表达式不会匹配任何东西。 Example 从示例中删除@并显示结果,它应该可以工作:rextester.com/ZSVQ23438以上是关于无法在 C# 中使用 Regex.Unescape 删除转义序列的主要内容,如果未能解决你的问题,请参考以下文章
无法使用带有 Name.EndsWith 的反射在 C# 中找到接口