首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止替换逗号分隔字符串中已替换的字符串。

防止替换逗号分隔字符串中已替换的字符串。
EN

Stack Overflow用户
提问于 2018-06-06 12:29:58
回答 5查看 160关注 0票数 3

我有一根绳子

代码语言:javascript
复制
string mainstr = "NONSALE_REVENUE,SALE_REVENUE";

我试图用SUM(NONSALE_REVENUE)代替NONSALE_REVENUE,用SUM(SALE_REVENUE)代替SALE_REVENUE

我试过的是:

代码语言:javascript
复制
 mainstr = mainstr.Replace("SALE_REVENUE", "SUM(SALE_REVENUE)");
 mainstr = mainstr.Replace("NONSALE_REVENUE", "SUM(NONSALE_REVENUE)");

这给了我错误的结果:

NONSUM(SALE_REVENUE,SUM(SALE_REVENUE

我的预期结果是SUM(NONSALE_REVENUE),SUM(SALE_REVENUE)

我怎样才能做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-06-06 12:36:09

您可以通过RegEx实现这一点。

代码语言:javascript
复制
string mainstr = "NONSALE_REVENUE,SALE_REVENUE";
string newString = Regex.Replace(mainstr, @"\bNONSALE_REVENUE\b", "SUM(NONSALE_REVENUE)");
newString = Regex.Replace(newString, @"\bSALE_REVENUE\b", "SUM(SALE_REVENUE)");

Console.WriteLine(newString);
票数 3
EN

Stack Overflow用户

发布于 2018-06-06 12:32:57

您可以使用, char检测单个值。

代码语言:javascript
复制
string mainstr = "NONSALE_REVENUE,SALE_REVENUE";
string result = string.Join(",", mainstr.Split(',').Select(x => "SUM("+ x + ")"));
票数 5
EN

Stack Overflow用户

发布于 2018-06-06 12:43:12

一个正则表达式替换步骤:

代码语言:javascript
复制
Regex.Replace(mainstr, @"(?:NON)?SALE_REVENUE", "SUM($&)")

如果要确保替换整个单词,请用\b (单词边界)括住该模式:

代码语言:javascript
复制
Regex.Replace(mainstr, @"\b(?:NON)?SALE_REVENUE\b", "SUM($&)")

或者,如果只匹配逗号和/或字符串的开头/结尾处的子字符串很重要,请使用

代码语言:javascript
复制
Regex.Replace(mainstr, @"(?<![^,])(?:NON)?SALE_REVENUE(?![^,])", "SUM($&)")

其中,(?<![^,])是一个负查找,不需要在左侧立即使用非逗号字符,而(?![^,])是一个负查找,在搜索短语的右侧不需要任何非逗号字符。

替换模式中的$&在替换期间插入整个匹配。

regex在线演示

模式细节

  • \b -一个单词边界或
  • (?<![^,]) --一种不需要在左边立即使用非逗号字符的负面查找。
  • (?:NON)? -可选的非捕获组匹配1或0出现的NON
  • SALE_REVENUE -一个文字子字符串
  • (?![^,]) -在搜索短语的右侧不需要非逗号字符的负面展望。
  • \b -(关闭)字边界。

C#演示

代码语言:javascript
复制
string mainstr = "NONSALE_REVENUE,SALE_REVENUE";
string result = Regex.Replace(mainstr, @"(?<![^,])(?:NON)?SALE_REVENUE(?![^,])", "SUM($&)");
Console.WriteLine(result);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50720447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档