字符串替换Replace仅替换第一个匹配项
C#里面的String.Replace(string,string)方法替换的时候是替换所有的匹配项,但是有时候我们会遇到这样的需求,就是只替换第一个匹配项。
我这里自己写另一个方法来实现这个功能,求大家指教:
public static string Replace(string source, string match, string replacement)
{
char[] sArr = source.ToCharArray();
char[] mArr = match.ToCharArray();
char[] rArr = replacement.ToCharArray();
int idx = IndexOf(sArr, mArr);
if (idx == -1)
{
return source;
}
else
{
return new string(sArr.Take(idx).Concat(rArr).Concat(sArr.Skip(idx + mArr.Length)).ToArray());
}
}
/// <summary>
/// 查找字符数组在另一个字符数组中匹配的位置
/// </summary>
/// <param name="source">源字符数组</param>
/// <param name="match">匹配字符数组</param>
/// <returns>匹配的位置,未找到匹配则返回-1</returns>
private static int IndexOf(char[] source, char[] match)
{
int idx = -1;
for (int i = 0; i < source.Length - match.Length; i++)
{
if (source[i] == match[0])
{
bool isMatch = true;
for (int j = 0; j < match.Length; j++)
{
if (source[i + j] != match[j])
{
isMatch = false;
break;
}
}
if (isMatch)
{
idx = i;
break;
}
}
}
return idx;
}
这里的第二个方法,我总觉得看了不爽,求更好的实现。
字符串替换Replace仅替换第一个匹配项的更多相关文章
- JS的replace默认只替换第一个匹配项
1. JS的replace默认只替换第一个匹配项. 解决方法: 使用正则表达式进行匹配替换[ ①.replace(new RegExp(②,"g") ,③); ] ①:包含 ...
- oracle学习笔记:字符串替换 replace、regexp_replace、translate函数
1.replace 函数 语法:replace(char, search_string, replacement_string) --针对字符串替换 功能: 将char中的字符串替换. 当re ...
- 浅谈JavaScript的字符串的replace方法
JavaScript字符串提供了一个replace方法.replace方法可以接受两个参数:第一个参数可以使RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数.如果第一个参数是字符 ...
- C#自定义字符串替换Replace方法
前一阵遇到一个如标题的算法题,是将原有字符串的某些片段替换成指定的新字符串片段,例如将源字符串:abcdeabcdfbcdefg中的cde替换成12345,得到结果字符串:ab12345abcdfb1 ...
- Python3字符串替换replace(),translate(),re.sub()
Python3的字符串替换,这里总结了三个函数,replace()和translate()和re.sub() replace() replace() 方法把字符串中的 old(旧字符串) 替换成 ne ...
- java字符串的替换replace、replaceAll、replaceFirst的区别详解
如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式! 不多解释,看代码: String s = "my.te ...
- JAVA字符串的替换replace、replaceAll、replaceFirst的区别解析。
String str = "i.like.cat"; System.out.println(str.replace(".", "!")); ...
- 字符串正则替换replace第二个参数是函数的问题
按照JS高程的说法,如下 replace()方法的第二个参数也可以是一个函数.在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项.模式匹配项在字符串中的位置和原始 ...
- MySQL replace函数替换字符串语句的用法(mysql字符串替换)
MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪. 最近在研究CMS,在数据转换的时候需要用 ...
- JQuery字符串替换replace方法
在日常的js开发中,常常会用到JQuery, 当要把字符串中的内容替换时,如果使用类似C#的string.replace方法,如下 var str='aabbccaa'; str=str.replac ...
随机推荐
- 解决Maven下载依赖慢的问题
参考:https://blog.csdn.net/web15085599741/article/details/126459039 <repositories> <repositor ...
- oracle WMSYS.WM_CONCAT 函数使用
1.用法 WMSYS.WM_CONCAT(要连接的字段) 该函数返回来自同一个分组的指定字段的非NULL值的连接起来字符串,默认逗号连接,一般搭配分组函数使用 2.示例 select XFJ_ID,R ...
- 我和Java这些年的故事(五)
时光荏苒,我来到了IBM.和慕名已久的WebSphere Application Server(WAS)打起了交道. 之前我搞过Weblogic,对应用服务器的特性有了一定的了解.但WAS无疑更为庞大 ...
- 1.EditPlus
EditPlus软件使用 1.新建 XML 文件 2.编辑器设置 在文件保存时选择编码格式
- 睿爸信奥-【临阵磨枪】练习赛(第一场)- T3
目录 题面 题目背景 输入格式 输出格式 思路 code 题面 题目背景 徐老师很胖,长宽高比例为1:1:1,他每次走路都要滚来滚去~~现在假设在一个平面上有 n 个没有公共点公共点的圆.徐老师要从点 ...
- Linux awk 替换文本字符串内容
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- 062_Apex使用Assert
assert关键字用法简单,但是使用assert往往会让你陷入越来越深的陷阱中.应避免使用.总结了以下原因: 1.用assert代替if是陷阱之二.assert的判断和if语句差不多,但两者的作用 ...
- Linux下Jenkins的安装和启动(war包)
1.下载Jenkins war包 Jenkins jar 下载 或者使用在线地址下载如下 wget http://mirrors.jenkins-ci.org/war/latest/jenkins.w ...
- vue3+ts获取dom元素高度
vue3+ts获取dom元素高度 <template> <div class="digestDetail-indedx"> <div class=&q ...
- Knowledge Fusion例子
#! NX/KF 5.0 # #************************************************************************************ ...