字符串替换Replace仅替换第一个字符串匹配项

 更新时间:2013年12月26日 15:31:54   作者:  
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;
        }

相关文章

  • C#关闭指定名字进程的方法

    C#关闭指定名字进程的方法

    这篇文章主要介绍了C#关闭指定名字进程的方法,涉及C#进程操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 解析C#拼接Json串的几种方法

    解析C#拼接Json串的几种方法

    本文主要介绍了C#拼接Json串的几种方法,主要包括了4种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C#实现串口示波器

    C#实现串口示波器

    这篇文章主要为大家详细介绍了C#实现串口示波器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C# Onnx实现DIS高精度图像二类分割

    C# Onnx实现DIS高精度图像二类分割

    这篇文章主要为大家详细介绍了C# Onnx实现DIS高精度图像二类分割的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • 关于C#基础知识回顾--反射(二)

    关于C#基础知识回顾--反射(二)

    其实说白了,反射就是能知道我们未知类型的类型信息这么一个东西.没什么神秘可讲!反射的核心是System.Type。System.Type包含了很多属性和方法,使用这些属性和方法可以在运行时得到类型信息
    2013-07-07
  • 详解C#设计模式编程中的模板方法模式使用

    详解C#设计模式编程中的模板方法模式使用

    这篇文章主要介绍了C#设计模式编程中的模板方法模式,模板方法模式比较好理解,即设定好算法骨架以后进行代码的反复利用,需要的朋友可以参考下
    2016-02-02
  • C# 使用原生 System.IO.Compression 实现 zip 的压缩与解压

    C# 使用原生 System.IO.Compression 实现 zip 的压缩与解压

    这篇文章主要介绍了C# 使用原生 System.IO.Compression 实现 zip 的压缩与解压,zip 是一个非常常见的压缩包格式,本文主要用于说明如何使用代码 文件或文件夹压缩为 zip压缩包及其解压操作,需要的朋友可以参考下
    2022-09-09
  • C#多线程ThreadPool线程池详解

    C#多线程ThreadPool线程池详解

    这篇文章主要为大家详细介绍了C#多线程ThreadPool线程池的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C# 基于NAudio实现对Wav音频文件剪切(限PCM格式)

    C# 基于NAudio实现对Wav音频文件剪切(限PCM格式)

    本文主要介绍了C#基于NAudio工具对Wav音频文件进行剪切,可以将一个音频文件剪切成多个音频文件(限PCM格式),感兴趣的小伙伴可以学习一下
    2021-11-11
  • WinForm项目开发中Excel用法实例解析

    WinForm项目开发中Excel用法实例解析

    这篇文章主要介绍了WinForm项目开发中Excel用法,非常实用,需要的朋友可以参考下
    2014-08-08

最新评论