gpt4 book ai didi

c# - 如何在一行代码中转义所有值得转义的字符?

转载 作者:行者123 更新时间:2023-12-01 22:43:38 26 4
gpt4 key购买 nike

根据我所看到的here (接受的答案),看来我可以通过这样做来转义字符串:

string s = "Woolworth's";
string t = Regex.Escape(s);
MessageBox.Show(t);

...但是逐步查看,我发现 s 和 t 之间没有区别(我希望将“Woolworth\'s”视为 t 的值,而不是两个变量的“Woolworth's”)。

我想,我可以做这样的事情:

    string s = "Woolworth's";
s = s.Replace("'", "\'");

...etc., also escaping the following: [, ^, $, ., |, ?, *, +, (, ), and \

...但“一站式购物”解决方案会更好。

更具体地说,我需要用户输入的字符串是 Android arrays.xml 文件中可接受的字符串值。

例如,它会因为这个而窒息:

<item>Woolworth's</item>

...需要是这样的:

<item>Woolworth\'s</item>

最佳答案

Regex.Escape()仅转义正则表达式保留字符:

Escapes a minimal set of characters (\, *, +, ?, |, {, [, (,), ^, $,., #, and white space) by replacing them with their escape codes. This instructs the regular expression engine to interpret these characters literally rather than as metacharacters.

<小时/>

匹配/捕获要转义的字符的字符类(注意,某些字符在字符类中具有特殊含义,需要转义,例如 \-) :

(['^$.|?*+()\\])

然后将其替换为反斜杠和对要转义的字符的引用:

\\1

Demo

<小时/>

在 C# 中:

string s = "Woolworth's";
Regex rgx = new Regex("(['^$.|?*+()\\\\])");

string t = rgx.Replace(s, "\\$1");
// Woolworth\'s

Demo

关于c# - 如何在一行代码中转义所有值得转义的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com