串的替换操作:已知串 s、t、r,用 r 替换 s 中出现的所有与 t 相等的子串。写出算法,方法名为 Replace。

public static StringDS Replace(StringDS s, StringDS t, StringDS r) {
            int tLen = t.GetLength();//要被替换的字符窜长度
            int index=s.IndexOf(t);//要被替换的索引起始位置
            char[] newData1 = new char[index+1];//s字符串的前部分
            char[] newData2 = new char[r.GetLength()];//被替换部分
            char[] newData3 = new char[s.GetLength()-index-tLen];//s字符串的后部分
            char[] newData = new char[newData1.Length+newData2.Length+newData3.Length];//接收最后字符串
            if (s.GetLength() >= t.GetLength() && s.IndexOf(t)>=0)//s定位t字符串返回值不为-1
            {//newData1,newData2,newData3分别赋值
                for (int i = 0; i < index; i++)
                {
                    newData1[i] = s[i];
                }
                for (int i = 0; i < r.GetLength(); i++)
                {
                    newData2[i] = r[i];
                }
                for (int i = index+tLen; i < s.GetLength(); i++)
                {
                    newData3[i-index-tLen] = s[i];
                }
                //newData接收3个分解数组
                for (int i = 0; i < newData1.Length; i++)
                {
                    newData[i] = newData1[i];
                }
                for (int i = newData1.Length; i < newData2.Length+ newData1.Length; i++)
                {
                    newData[i-1] = newData2[i-newData1.Length];
                }
                for (int i = newData1.Length+newData2.Length; i < newData.Length; i++)
                {
                    newData[i-1] = newData3[i-newData1.Length-newData2.Length];
                }
                return new StringDS(newData);//返回最后的字符串
            }
            else
            {
                return new StringDS("字符串超出s的范围");
            }
        }
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值