如何替换字符串内部单引号且保留首尾单引号?
替换字符串内部单引号(保留首尾单引号)
方法一:拆分拼接法
逻辑直观,分三步处理:
- 定位字符串中第一个和最后一个单引号的位置
- 提取首尾单引号之间的内容,将其中的单引号替换为双单引号
- 重新拼接首尾部分与替换后的中间内容
以C#为例,代码实现如下:
string myString = "'OA'Nel'Test, John; random's t'est'"; int firstQuote = myString.IndexOf('\''); int lastQuote = myString.LastIndexOf('\''); if (firstQuote != -1 && lastQuote != -1 && firstQuote < lastQuote) { // 提取中间内容 string middleContent = myString.Substring(firstQuote + 1, lastQuote - firstQuote - 1); // 替换中间的单引号 string replacedMiddle = middleContent.Replace('\'', '\'\''); // 拼接结果 string result = myString.Substring(0, firstQuote + 1) + replacedMiddle + myString.Substring(lastQuote); // 输出:"'OA''Nel''Test, John; random''s t''est'" }
方法二:正则表达式替换法
利用正则匹配首尾单引号之间的内容,再对匹配到的内容进行单引号替换:
using System.Text.RegularExpressions; string myString = "'OR'Nel, Dan' "; string result = Regex.Replace(myString, @"(?<=')(.*?)(?=')", match => match.Value.Replace("'", "''")); // 输出:"'OR''Nel, Dan' "
这里的正则(?<=')(.*?)(?=')会匹配被单引号包裹的中间内容,然后通过委托将匹配到的内容里的单引号替换为双单引号。
效果验证
针对输入示例:
- 输入:
myString = "'O'Nel'"→ 输出:"'O''Nel'" - 输入:
myString = "'OR'Nel, Dan' "→ 输出:"'OR''Nel, Dan' " - 输入:
myString = "'OA'Nel'Test, John; random's t'est'"→ 输出:"'OA''Nel''Test, John; random''s t''est'"
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

