【C#】字符串按条件替换关键字
private string MyReplace(string json, string keyWord, string newWord, Func<string, string, bool> func)
{
StringBuilder sb = new StringBuilder();
int preIndex = 0;
int oldLen = keyWord.Length;
int lastIndex = json.LastIndexOf(keyWord); while (true)
{
int idx = json.IndexOf(keyWord, preIndex); if (idx < 0)
{
return json;
} var temp = json.Substring(preIndex, idx - preIndex);
sb.Append(temp);
var temp1 = string.Empty;
var temp2 = string.Empty; if (idx - 1 < 0)
{
temp1 = "";
}
else { temp1 = json.Substring(idx - 1, 1);
}
if (idx + oldLen >= json.Length)
{
temp2 = "";
}
else
{
temp2= json.Substring(idx + oldLen, 1);
}
if (func(temp1,temp2))
{ sb.Append(newWord);
}
else
{
sb.Append(keyWord);
} preIndex = idx + oldLen; if (preIndex > lastIndex)
{
break;
} }
if (preIndex < json.Length)
{
sb.Append(json.Substring(preIndex));
} return sb.ToString(); }
测试代码:
string json = "\"abc\"{\"abc\":\"13\",\"jeabcje\":23,\"jabc\":234,\"abcJ\":567,\"a13\":323,\"ggg\":\"end\"}\"abc\":12abc3";
string keyWord = "abc";
string newWord = "Keys";
string str = MyReplace(json, keyWord, newWord, (a, b) => { return a == "\"" && b == "\""; });
主要功能是把json里 属性替换掉,比如"abc"属性 替换成“Keys”,而不会把“jeabcje”这种包含abc的属性也替换为Key。
func是你的特殊条件,当满足这个条件,才会替换关键字。
【C#】字符串按条件替换关键字的更多相关文章
- mysql 字符串 拼接 截取 替换
一. 字符串拼接 concat('asdf',str); 说明: 拼接asdf 和 str 二. 字符串截取 从左开始截取字符串 left(str, length) 说明:) as abstract ...
- 在Vi里面实现字符串的批量替换
在Vi里面实现字符串的批量替换. a. 文件内全部替换: %s#abc#def#g(用def替换文件中所有的abc) 例如把一个文本文件里面的"linuxidc.com"全部替换成 ...
- linq字符串搜索条件,排序条件-linq动态查询语句 Dynamic LINQ
在做搜索和排序的时候,往往是前台传过来的字符串做条件,参数的数量还不定,这就需要用拼sql语句一样拼linq语句.而linq语句又是强类型的,不能用字符串拼出来. 现在好了,有个开源的linq扩展方法 ...
- python字符串截取与替换的例子
python字符串截取与替换的多种方法 时间:2016-03-12 20:08:14来源:网络 导读:python字符串截取与替换的多种方法,以冒号分隔的字符串的截取方法,python字符串替换方法, ...
- 剑指offer 1,输入一个字符串,将字符串的空格替换成%20
剑指offer 1,输入一个字符串,将字符串的空格替换成%20 function replaceSpace(str){ return str.replace(/\s/g,"% ...
- angluarjs实现过滤并替换关键字
html样式 <body ng-app="myapp" ng-controller="myCtrl"> <input type="t ...
- 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)
原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- js replace替换字符串,同时替换多个方法
在实际开发中,经常会遇到替换字符串的情况,但是大多数情况都是用replace替换一种字符串,本文介绍了如何使用replace替换多种指定的字符串,同时支持可拓展增加字符串关键字. let conten ...
- 笔记二:JS的输出、语法、语句、字符串、条件语句、switch语句、for循环、while循环
1.JS的输出: 注意:JS没有任何打印或者输出的函数 JS输出数据的集中方法: 1.使用window.alert()弹出警告框: 2.使用document.write()方法将内容写到HTML文档 ...
- kotlin字符串模板&条件控制
字符串模版: 小时候都有要求记日记的习惯,下面是一小学生记的日记: 很漂亮的流水账,那细分析一下这些文件其实大体都类似,只有几个不同点: 其实就是地点变了,那对于这种有规律的文字可以采用kotlin的 ...
随机推荐
- RabbitMQ 03 直连模式-可视化界面
这里先演示最简单的模型:直连模式.其结构图为: 一个生产者 -> 消息队列 -> 一个消费者 生产者只需要将数据丢进消息队列,而消费者只需要将数据从消息队列中取出,这样就实现了生产者和消费 ...
- vs报错:RC1004 unexpected end of file found
如图,在编译代码时,出现报错:RC1004 unexpected end of file found 原因是,cpp最后要多一行才行,不然就会报这个错误 错误示例: int main() { ret ...
- 鼠标移动出现雪花-js实现
// 鼠标移动出现雪花.html <!DOCTYPE html> <html> <head> <title></title> <scr ...
- 整理k8s————k8s组件[二]
前言 简单整理一下k8s 组件. 正文 borg 架构: borgmaster 是处理请求分发的. borglet 是具体运行容器. 这里有一个调度scheduler,这个比较重要吧. 比如说用户通过 ...
- RestfulApi 学习笔记——分页和排序(六)
前言 分页和排序时一些非常常规的操作,同样也有一些我们注意的点. 正文 分页 先来谈及分页. 看下前端传递的参数. public class EmployeeDtoParameters { priva ...
- lattice的ipexpress异常,解决办法
最近ip服务器可能会遇到问题,建议客户把更新检查关掉.我们有对应的IP下载链接. https://www.latticesemi.com/ispupdate/ipexpress/ https://ra ...
- Vue3.0 框架搭建的后台管理模板
一个Vue3.0框架搭建的后台管理模板 开源vue3.0版本基于vue3.x+ant-design-vue构建的免费开源admin项目,star高达8.4K+ 支持电脑端.手机.平板等平台 底层使用e ...
- 谷歌浏览器新功能 Copy Declaration
不知道最近大家有没有发现,从谷歌浏览器开发者工具复制 Css 代码到 Vs Code,粘贴之后 Css 代码错乱了.昨天在复制样式代码的时候,突然发现复制的 Css 代码粘贴之后就错乱了.具体表现如下 ...
- 红日安全vulnstack (一)
网络拓扑图 靶机参考文章 CS/MSF派发shell 环境搭建 IP搭建教程 本机双网卡 65网段和83网段是自己本机电脑(虚拟机)中的网卡, 靶机外网的IP需要借助我们这两个网段之一出网 Kali ...
- 做ToB软件质量保障的这两年
简介:自己算是阿里的老兵了,从实习开始一直投身在 toB 业务的质量保障领域内,不能说是资深的专家,但所经历的.感受的业务特点和体会还是具有一定的代表性,希望能通过这篇文章,总结一下过往,并能和已经 ...