精华内容
下载资源
问答
  • 字符串替换

    千次阅读 2018-08-17 19:59:53
    请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。 给定一个字符串A,...

    请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。

    给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。

    测试样例:"A%sC%sE",7,['B','D','F']

    返回:"ABCDEF"

     

    方法:特殊函数替换法

     

    解析:定义pos在原字符串A中查找“%s”子串,从而获得“%s”的初始位置。然后替换“%s”,即定义一个下标i,并初始化为0,再定义一个字符串接收arg中替换的字符,然后遍历原字符串A,当其元素为“%s”时,将arg中元素赋值给字符串s,再利用replace函数将原字符串中的“%s”替换成s中的元素。最后判断参数列表的字符数是否大于占位符个数,如果是则将剩下的参数字符添加到字符串的末尾。由此得到替换后的字符串。

     

    代码:

    //string::npos参数:pos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。

     

    //find函数的返回值是整数,假如字符串存在包含关系,其返回值必定不等于npos,但如果字符串不存在包含关系,那么返回值就一定是npos。所以不难想到用if判断语句来实现!

    string formatString(string A, int n, vector<char> arg, int m)
    
    {
    
        int pos = A.find("%s");//在A中查找“%s"串
    
        int i = 0;
    
        string s;
    
        while(pos != string::npos)
    
           {
    
            s = arg[i++];
    
            A.replace(pos,2,s,0,1);//替换
    
            pos = A.find("%s");
    
        }
    
            
    
        while(i < m)
    
           {
    
            A += arg[i++];
    
        }
    
        return A;
    
    }
    
    

    方法二:特殊函数删除法

     

    解析:先定义一个变量k,初始化为0,表示arg替换时的下标,然后遍历原字符串A,替换“%s”,即判断元素是否为‘%’并且下个元素为‘s’,如果是,arg中的某个元素替换当前元素,再用erase函数删除后一个元素;最后判断变量k是否不等于arg的长度,如果是,则将剩下的字符使用循环语句将其放入在字符串A中;如此可以得到替换后的字符串。

     

    代码:

    //erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
    
    //erase(position);删除position处的一个字符(position是个string类型的迭代器)
    
    //erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
    
    string formatString(string A, int n, vector<char> arg, int m)
    
    {
    
        int k=0;
    
           for(int i=0;i<n;i++)
    
           {
    
                  if(A[i]=='%'&&A[i+1]=='s')
    
                  {
    
                         A[i]=arg[k];
    
                         k++;
    
                         A=A.erase(i+1,1);
    
                  }
    
           }
    
           if(k!=m)
    
           {
    
                  for(int j=k;j<m;j++)
    
                         A=A+arg[j];
    
           }
    
           return A;
    
    }

     

    方法三:特殊函数复制法

     

    解析:先遍历原字符串A,将其‘%s’替换,即定义一个变量找到‘%’的位置,然后用substr复制函数将‘%’位置前的字符复制到新的字符res中,再将‘%s’替换的arg中的元素写入新地字符串res中,此时用substr函数将A的字符串变为‘%s’之后的部分,如此反复替换完‘%s’;接着将新的字符串res与A相加得到字符串res;最后用遍历的方式将arg中剩余的元素写入res末尾,由此得到最终所求解的字符串。

     

    代码:

    string formatString(string A, int n, vector<char> arg, int m)
    
    {
    
        string res;
    
        int count = 0;
    
        while(A.find('%') != -1)
    
           {
    
            int index = A.find('%');
    
            string a = A.substr(0,index);
    
            res = res + a;
    
            res = res + arg[count++];
    
            A = A.substr(index+2,A.size());
    
        }
    
        res = res + A;
    
        for(int i = count; i < m; i++)
    
           {
    
            res = res + arg[i];
    
        }  
    
        return res;
    
    }

     

    展开全文
  • C语言 16行代码实现字符串中指定字符串替换

    万次阅读 多人点赞 2018-08-03 17:05:35
    1.等长字符串替换 2.长字符串替换为短字符串 3.短字符串替换为长字符串 4.中文替换 注意:短字符串替换成长字符串要注意内存越界 其他字符串函数https://mp.csdn.net/postedit/82996174 函数代码 /* 功 能...

    支持:


    1.等长字符串替换

    2.长字符串替换为短字符串

    3.短字符串替换为长字符串

    4.中文替换

    注意:短字符串替换成长字符串要注意内存越界

    其他字符串函数https://mp.csdn.net/postedit/82996174

     

    函数代码

    /* 功  能:将str字符串中的oldstr字符串替换为newstr字符串
     * 参  数:str:操作目标 oldstr:被替换者 newstr:替换者
     * 返回值:返回替换之后的字符串
     * 版  本: V0.2
     */
    char *strrpc(char *str,char *oldstr,char *newstr){
        char bstr[strlen(str)];//转换缓冲区
        memset(bstr,0,sizeof(bstr));
     
        for(int i = 0;i < strlen(str);i++){
            if(!strncmp(str+i,oldstr,strlen(oldstr))){//查找目标字符串
                strcat(bstr,newstr);
                i += strlen(oldstr) - 1;
            }else{
            	strncat(bstr,str + i,1);//保存一字节进缓冲区
    	    }
        }
    
        strcpy(str,bstr);
        return str;
    } 

     

    测试代码


    #include <stdio.h>
    #include <string.h>
    
    
    /* 功  能:将str字符串中的oldstr字符串替换为newstr字符串
     * 参  数:str:操作目标 oldstr:被替换者 newstr:替换者
     * 返回值:返回替换之后的字符串
     * 版  本: V0.2
     */
    char *strrpc(char *str,char *oldstr,char *newstr){
        char bstr[strlen(str)];//转换缓冲区
        memset(bstr,0,sizeof(bstr));
     
        for(int i = 0;i < strlen(str);i++){
            if(!strncmp(str+i,oldstr,strlen(oldstr))){//查找目标字符串
                strcat(bstr,newstr);
                i += strlen(oldstr) - 1;
            }else{
            	strncat(bstr,str + i,1);//保存一字节进缓冲区
    	    }
        }
     
        strcpy(str,bstr);
        return str;
    }
    
    int main(void)
    {
    	char str[] = "Hello,中国!\n"; 
    	strrpc(str,"中国","世界");
    	printf("%s",str);
    	strrpc(str,"Hello","你好");
    	printf("%s",str);
    	strrpc(str,"你好,世界","Hello,world");
    	printf("%s",str);
    	return 0;
    }
    

    搜这个的人还挺多,大家还需要什么别的函数,欢迎在下方留言^-^。

     

     

    展开全文
  • 字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成新字段。 Concat fields就是多个字段连接起来形成一个新的字段。 字符串操作是去除字符串两端的空格和大小写切换,并生成新的...

    Kettle字段选择、剪切字符串、字符串替换、Concat fields、字符串操作

    一、kettle字段选择

    字段选择是选择想要的字段
    在这里插入图片描述
    字段选择设置
    在这里插入图片描述
    源数据
    在这里插入图片描述
    字段选择后数据如下

    在这里插入图片描述

    二、剪切字符串、字符串替换、Concat fields、字符串操作

    剪切字符串是指定输入流字段裁剪的位置剪切出新的字段。
    字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成新字段。
    Concat fields就是多个字段连接起来形成一个新的字段。
    字符串操作是去除字符串两端的空格和大小写切换,并生成新的字段。
    在这里插入图片描述

    源数据
    在这里插入图片描述
    剪切字符串设置
    在这里插入图片描述

    字符串替换设置
    在这里插入图片描述

    Concat fields设置

    在这里插入图片描述

    字符串操作设置
    在这里插入图片描述

    经过剪切字符串、字符串替换、Concat fields、字符串操作后的数据如下
    在这里插入图片描述

    展开全文
  • 不调用库函数,自己实现字符串替换操作,函数原型为: int str_replace(const char *in, char *out, int outlen, const char *oldstr, const char *newstr); 参数说明: in, 原始字符串,保持不变 out, 存放替换结果...

    不调用库函数,自己实现字符串替换操作,函数原型为:

    int str_replace(const char *in, char *out, int outlen, const char *oldstr, const char *newstr);

    参数说明:

    in, 原始字符串,保持不变

    out, 存放替换结果的字符串

    outlen,out空间的大小

    oldstr,要替换的旧字符串

    newstr,替换成的新字符串

    函数返回成功替换的次数,即有多少个子串被成功替换

    在替换过程中,任何情况下所得字符串(及结束符)不应该超过 outlen,如果某次替换所得字符串的长度超过 outlen,则不进行这次替换操作,整个替换操作结束。如:
    原始串为 “aaabbbccc”,outlen 为14, oldstr 为 “c”,newstr 为 “333” 时,两次替换后得 “aaabbb333333c”,此时字符串占用空间为14字节。
    如果再进行替换,则会超出 out 所占用的空间,所以停止替换操作。此时函数应该返回 2, out指向的串为 “aaabbb333333c”
    再如:原始串为 “aaabbbccc”,outlen 为10, oldstr 为 “bb”,newstr 为 “123456”,进行替换后所得的串应该为 “aaa123456” (长度为9)与结束符一共占 10 个字节,此时函数应该返回 1。

    #include "dsstring.h"
    #include <stdio.h>
    #include <stdlib.h>
    int get_len(const char* s)
    {
        int i = 0;
        while (s[i]) {
            i++;
        }
        return i;
    }
    int str_replace(const char* in, char* out, int outlen, const char* oldstr, const char* newstr)
    {
        int count_times = 0;
        int i;
        int j = 0;
        int k;
        int flag = 0;
        for (i = 0; outlen > 1 && in[i] != 0; i++) {
            if (in[i] != oldstr[0]) {
                out[j] = in[i];
                j++;
                outlen--;
                continue;
            } else {
                flag = 0;
                for (k = 0; oldstr[k] != 0; k++) {
                    if (in[k + i] != oldstr[k]) {
                        break;
                    } else {
                        if (k == (get_len(oldstr) - 1)) {
                            if (outlen > get_len(newstr)) {
                                i += k;
                                flag = 1;
                            }
                        }
                    }
                }
                if (flag == 1) {
                    count_times++;
                    for (k = 0; newstr[k] != 0; k++) {
                        out[j] = newstr[k];
                        j++;
                        outlen--;
                    }
                } else {
                    out[j] = in[i];
                    j++;
                    outlen--;
                }
            }
        }
        out[j] = 0;
        return count_times;
    }

    如果有更好的方法或者以上程序有任何错误,欢迎讨论。

    展开全文
  • iOS之字符串截取、iOS 字符串替换、iOS字符串分隔、iOS之字符串匹配、截取字符串、匹配字符串、分隔字符串 1.iOS 字符串截取 //1.ios截取字符串 NSString *string =@"123456d890"; NSString *str1 = ...
  • *在有效的字符串内,用新字符串替换指定的字符串,仅执行一次替换操作 *str: 待替换的字符串源 *oldstr: 被替换的字符串 *newstr: 用于替换的新字符串 *result: 参数输出执行替换后的结果(可用该函数返回值,也可用...
  • Java字符串替换? 背景: H5界面UI修改,其中有参数从其他平台传递,因无法修改,故而直接在传递 过来的值中进行处理,然后渲染. 问题: 如何在既定的字符串数据中匹配替换指定的字符串? 解决办法: 大致处理步骤如下:...
  • c++字符串替换

    千次阅读 2018-08-16 19:35:40
    C++的string提供了replace方法来实现字符串的替换,但是对于将字符...用新字符串替换所有旧字符串,替换之后仍可能出现出现有旧的字符串 string&amp; replace_all替换之后不再出现有旧的字符串(替换的更彻底) ...
  • go 字符串替换

    万次阅读 2018-02-05 10:19:30
    引入strings包 import "strings" ...在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换 //替换两次 fmt.Println(strings.Replace("oink oink oink", "k", "ky
  • 将a字符串中的所有b字符串替换成c字符串 , strcat函数,查找并返回第二个字符串在第一个字符串的位置
  • python字符串替换replace函数

    千次阅读 多人点赞 2019-11-03 11:21:11
    python字符串替换replace函数 replace(old, new, count) old,旧字符或字符串 new,新字符或字符串 count,最大替换数量,从起始位置开始计数,默认替换所有 注意:replace函数替换字符串,不影响原字符串 示例1:...
  • cmd 字符串替换

    万次阅读 2016-10-14 16:21:24
    cmd,字符串替换
  • js替换全部字符串 - 无replaceAll的解决方案原生js中并没有replaceAll方法,只有replace,如果要将字符串替换,一般使用replacevar str = '2016-09-19'; var result = str.replace('-',''); console.log(result); .....
  • python 字符串替换

    千次阅读 2017-09-24 11:20:54
    python 字符串替换可以用2种方法实现: 1是用字符串本身的方法。 2用正则来替换字符串 下面用个例子来实验下: a = 'hello word' 把a字符串里的word替换为python 1、用字符串本身的replace方法 复制...
  • 字符串替换之正则替换

    千次阅读 2017-07-24 22:41:12
    我想对于Java程序员而言,字符串替换肯定都是很熟悉的了,今天在工作中也遇到一个字符串替换的问题,可是一时之间竟然无从下手,顿时觉得基础没打好啊,这里记录一下,供需要的人学习一下。 需求描述:有个字符串...
  • 2.即用已知的字符串替换文件名中的某些字符 scanfInformation():输入一些必要的信息 */ import java.io.File; import java.io.IOException; import java.util.Scanner; public class Rename { private static ...
  • JAVA截取字符串的方法、字符串替换

    万次阅读 2018-07-19 23:20:13
    截取字符串的方法  String string1 = new String("abcd");  String string2 = string1.substring(0,3);//[0,3)  System.out.println(string2)...字符串替换的三种方法 String string1 = new...
  • Java 字符串 之 字符串替换

    万次阅读 2018-06-04 09:44:36
    字符串替换操作 1. String replace(char oldChar,char newChar) //将新字符替换旧字符 3. String replaceFirst(String regex,String replacement); //替换第一个满足条件的字符串 */ pub...
  • 现在需要把B3单元格的字符串“张三”替换为F3单元格的“李四”,然后把结果显示在D3具体写法为:先找到待替换的目标字符串的位置,并确定待替换的目标字符串的长度之后用字符串替换即可...
  • Linux环境下字符串替换

    千次阅读 2018-06-18 16:29:37
    将平时使用到的字符串替换整理下来。 字符串替换 平时使用的字符串的替换主要有3种 vim编辑器 变量的替换 linux命令批量替换 接下来逐个来介绍并给出示例。 vim编辑器 应用场景: 利用vim作为开发工具,...
  • 描述: 编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace) ,strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。  举个直观的例子吧,如:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,395
精华内容 23,758
关键字:

字符串替换