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仅替换第一个匹配项的更多相关文章

  1. JS的replace默认只替换第一个匹配项

    1. JS的replace默认只替换第一个匹配项. 解决方法: 使用正则表达式进行匹配替换[   ①.replace(new RegExp(②,"g") ,③);   ] ①:包含 ...

  2. oracle学习笔记:字符串替换 replace、regexp_replace、translate函数

    1.replace 函数 语法:replace(char, search_string, replacement_string) --针对字符串替换 功能: ​ 将char中的字符串替换. ​ 当re ...

  3. 浅谈JavaScript的字符串的replace方法

    JavaScript字符串提供了一个replace方法.replace方法可以接受两个参数:第一个参数可以使RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数.如果第一个参数是字符 ...

  4. C#自定义字符串替换Replace方法

    前一阵遇到一个如标题的算法题,是将原有字符串的某些片段替换成指定的新字符串片段,例如将源字符串:abcdeabcdfbcdefg中的cde替换成12345,得到结果字符串:ab12345abcdfb1 ...

  5. Python3字符串替换replace(),translate(),re.sub()

    Python3的字符串替换,这里总结了三个函数,replace()和translate()和re.sub() replace() replace() 方法把字符串中的 old(旧字符串) 替换成 ne ...

  6. java字符串的替换replace、replaceAll、replaceFirst的区别详解

    如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式! 不多解释,看代码: String s = "my.te ...

  7. JAVA字符串的替换replace、replaceAll、replaceFirst的区别解析。

    String str = "i.like.cat"; System.out.println(str.replace(".", "!")); ...

  8. 字符串正则替换replace第二个参数是函数的问题

    按照JS高程的说法,如下 replace()方法的第二个参数也可以是一个函数.在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项.模式匹配项在字符串中的位置和原始 ...

  9. MySQL replace函数替换字符串语句的用法(mysql字符串替换)

    MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪. 最近在研究CMS,在数据转换的时候需要用 ...

  10. JQuery字符串替换replace方法

    在日常的js开发中,常常会用到JQuery, 当要把字符串中的内容替换时,如果使用类似C#的string.replace方法,如下 var str='aabbccaa'; str=str.replac ...

随机推荐

  1. pull request 猜想

    先从某个地方 fork 一个项目, 我上传一个 git commit, 然后自动显示是否要 pull request, 点 是, 然后就发送到 charger 那里去了.1, git fork,2, ...

  2. Docker学习笔记-02 常用命令

    1.启动类: 启动docker: systemctl start docker 停止docker: systemctl stop docker 重启docker: systemctl restart ...

  3. kaola

    考拉布局 CSS <style> * { margin: 0; padding: 0; } body { background-color: #f5f5f5; } .clearfix:af ...

  4. R语言码农的Scala学习心得

    为了MLib,最近是铁了心要学好Spark.关注本博客的朋友应该知道我的主力语言是R,无论是训练模型还是做Elasticsearch,都是通过R脚本来操作的.之前的<通过 Spark R 操作 ...

  5. 原生js实现折线图

    不借助Echarts等图形框架原生JS快速实现折线图效果 1. 折线图效果预览 例如下图所示的折线图效果实现就很简单: 调用下面这段JS代码中的方法就好了: 假设页面上需要连接的所有点元素集合是ele ...

  6. php7安装mogodb

    本文教程只在 PHP7 安装使用!!! PHP7 Mongdb 扩展安装 我们使用 pecl 命令来安装: $ /usr/local/php7/bin/pecl install mongodb 执行成 ...

  7. imputation-文献:False signals induced by single-cell imputation(scRNA-seq插补引入的假阳性问题)

    文章题目 False signals induced by single-cell imputation 中文名: 单细胞插补引起的假信号 文章地址: https://f1000research.co ...

  8. js - console

    js - console 参考资料 JavaScript Console 对象 Node.js console.debug()用法及代码示例 nodejs.org console.log输出字体颜色 ...

  9. ubuntu64运行32位程序安装过程

    Ubuntu运行32位程序可以使用如下方法: 第一步: 确认你有一个64位架构的内核 你可以打开终端然后输入: dpkg --print-architecture 你将会看到像下面这样的内容: amd ...

  10. SQL 查询各表所占大小

    SELECT OBJECT_NAME(id) tablename , CASE WHEN reserved * 8 > 1024 THEN RTRIM(8 * reserved / 1024) ...