c# – Regex用多个单词中的相同值替换字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Regex用多个单词中的相同值替换字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1150字,纯文字阅读大概需要2分钟。
内容图文
我想用引号替换字符串.
Mystring如下所示:
var query = "SELECT abc.name,abc.owner-name FROM XXX";
我想按如下方式替换字符串.预期结果
SELECT abc."name",abc."owner-name" FROM XXX
我正在使用正则表达式代码如下:
Regex.Replace(query, $@"\b{column.ColumnName}\b", "\"" + column.ColumnName + "\"")
在取代以下字符串时获得结果 –
SELECT abc."name",abc."owner-"name"
名称是单独的字符串,owner-name是单独的字符串.在尝试替换名称字符串时,另一个字符串会自动替换,因为第二个字符串中包含单词name.
如果有任何解决方案,请告诉我.提前致谢.
解决方法:
你需要确保较长的一个先来.您可以创建列名列表,按降序排序,并构建一个替换组以形成正则表达式
\b(?:owner-name|owner|name)\b
请参阅how this regex will work.请注意,从左到右检查备选方案,一旦匹配,将跳过下一个备选方案.
这是一个以动态方式处理项目的片段(参见online C# demo):
var ColumnNames = new List<string> { "owner", "name", "owner-name"};
ColumnNames = ColumnNames.OrderByDescending(x => x.Length).ToList();
var s = "SELECT abc.name,abc.owner-name FROM XXX";
var pattern = $@"\b(?:{string.Join("|", ColumnNames)})\b";
var result = Regex.Replace(s, pattern, "\"$&\"");
Console.WriteLine(result);
// => SELECT abc."name",abc."owner-name" FROM XXX
内容总结
以上是互联网集市为您收集整理的c# – Regex用多个单词中的相同值替换字符串全部内容,希望文章能够帮你解决c# – Regex用多个单词中的相同值替换字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。