首页 > 代码库 > 如何在串中删除特定长度的子串

如何在串中删除特定长度的子串

昨天我们写了如何在串中插入另外一个串,那么今天我们来看看对应的操作:如何在串中删除指定长度的子串。也就是,从串S1中删除第pos个字符起长度为len的子串。

  •  中原娱乐城
    其实就是数组操作啦,把第pos个元素起的len个元素去掉即可。具体怎么去掉呢?把S[pos+len]赋值给S[pos],把S[pos+len+1]赋值给S[pos+1]……以此类推就OK了。

函数设计如下:

view source
 
print?
01/*  初始条件: 串S存在,1≤pos≤StrLength(S)-len+1 */
02/*  操作结果: 从串S中删除第pos个字符起长度为len的子串 */
03Status StrDelete(String S,int pos,int len)
04{
05    int i;
06    if(pos < 1||pos>S[0]-len+1||len < 0)
07        return ERROR;
08    for(i=pos+len; i<=S[0]; i++)
09        S[i-len]=S[i];
10    S[0]-=len;
11    return OK;
12}

测试执行代码为:

view source
 
print?
1case 8:
2    printf("从串s1的第pos个字符起,删除len个字符,请输入pos: \n");
3    scanf("%d", &i);
4    printf("再输入len: \n");
5    scanf("%d", &j);
6    StrDelete(s1,i,j);
7    StrPrint(s1);
8    break;

程序运行结果:

view source
 
print?
011.StrAssign 生成串
022.StrLength 求串长
033.StrCompare 串比较
044.Concat 串连接
055.SubString 求子串
066.Index 求子串位置
077.StrInsert 子串插入
088.StrDelete 子串删除
090.退出
10请选择你的操作:
111
12串s1为:nowamagic.net
13 
148
15从串s1的第pos个字符起,删除len个字符,请输入pos:
162
17再输入len:
183
19nmagic.net

完整的可执行程序在后面给出。

如何在串中删除特定长度的子串