去除字符串首部和尾部的空格

思路:

  • 记下第一个非空字符的位置temp1,记下头部空格的个数space_count_head以及尾部空格的个数space_count_tail。
  • 空格总数length_new=space_count_head+space_count_tail;
  • 将以temp1为起始位置,长度为length_new的字符串原址拷贝到源字符串上。

源代码如下:

void stripSpace(char str[],int length)
{
   if(str==NULL) return;
   char *temp = str;
   int last = length-1;
   int space_count_head = 0;
   int space_count_tail = 0;
   while(*temp==‘ ‘)
   {
       space_count_head++;
       temp++;
   }
   while(str[last]==‘ ‘)
   {
       space_count_tail++;
       last--;
   }
   int length_new = length-space_count_head-space_count_tail;
   int len = length_new;
   char *ret = str;
   while(length_new>0)
   {
       *str++= *temp++;
       length_new--;
   }
   ret[len]=‘\0‘;
}

main函数如下所示:

int main()
{
    char str[] = " hello world  ";
    char *p = str;
    cout << "before strip:" << endl;
    cout << "str is " << endl;
    cout << str << endl;
    cout << "before: strlen(str) " << strlen(str) << endl;
    int length = strlen(str);
    stripSpace(str,length);
    cout << "after strip:" << endl;
    cout << "str is " << endl;
    cout << str << endl;
    cout << "after: strlen(str) " << strlen(str) << endl;
    return 0;
}

开始我将原始字符串定义为:char *str = " hello world  ",发现str在被调用函数中不能进行原址修改,如 str[1] = ‘d‘是不允许的。

另外一个调了很久的bug就是在最后加‘\0‘时直接加在了str上,str[len]=‘\0‘,实际上str的位置在进行原址拷贝的时候已经变动,这时会产生野指针,所以应该记下str的起始位置。

时间: 2024-12-20 01:14:28

去除字符串首部和尾部的空格的相关文章

去除字符串中单词的多余空格

题目很水,我想代码应该就是最好的注释,实现如下: /************************************************************************* > File Name: trim_space.c > Author: KrisChou > Mail:[email protected] > Created Time: Sun 24 Aug 2014 10:03:33 AM CST *************************

【iOS】去除字符串首尾空格或某字符

在iOS的实际开发中,常会出现需要去除空格的情况,总结有三种情况: 去除字符串首尾连续字符(如空格): 去除字符串首部连续字符(如空格): 去除字符串尾部连续字符(如空格): 去除字符串首尾连续字符(如空格) NSString *a = @" a sdf "; [a stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 去除字符串首部连续字符(如空格): NSString

Python中去除字符串中空格的方法

Python中去除字符串中指定字符或者空格的方法有几种: str.strip() //该方法用于去除字符串开头和结尾的指定字符或字符串(默认为空格或换行符) str.lstrip() //该方法用于截掉字符串左边的空格或指定字符 str.rstrip() //该方法用于截掉字符串右边的空格或指定字符 所以若是要去除字符串中所有的空格可以使用如下方式: str.strip().lstrip.rstrip() 原文地址:https://www.cnblogs.com/EdenChanIy/p/993

去除字符串首尾的空格

使用正则去除字符串首尾的空格. 分享三个去除字符串首尾空格的方法. 第一种,只调用一次replace方法 function trim(str){ return (str || "").replace(/^\s+|\s+$/g,""); } assert(trim(" #id div.class ") == "#id div.class", "Extra whitespace trimmed from a select

[py]str list切片-去除字符串首尾空格-递归思想

取出arr的前几项 #方法1 print([arr[0], arr[1]]) #方法2 arr2 = [] for i in range(2): arr2.append(arr[i]) print(arr2) #方法3 -切片 print(arr[:2]) 切片操作 参考 可以操作序列,如str list 取出最后一项 取出第一项 取出前10项 s[:10] 取出后10项 s[-10:] 删除首项 s[1:] 删除最后一项 s[:-1] ## 第一波 arr = [0, 1, 2, 3, 4]

01-JavaScript中去除字符串空格的方法

语法 string.trim() 参数值 无 返回值 类型:string 描述:返回移除头尾空格的字符串 技术细节 JavaScript版本: ECMAScript 5 去除字符串左右两端的空格,在vbscript里面可以使用trim.ltrim 或 rtrim,但在js中却没有这3个内置方法,需要手工编写.下面的实现方法用到了正则表达式,效率不错,并把这三个方法加入String对象的内置方法中去. 写成类的方法格式如下:(str.trim();) <script language= "j

shell实现trim函数-去除字符串两侧的空格(包括tab,space键)

shell实现trim函数效果去除字符串两侧的空格,以下三个命令等价,都能实现 sed 's/^\s*//' totrim.txt |sed 's/\s*$//'>trimed.txtsed 's/^\s*//;s/\s*$//' totrim.txt>trimed.txtsed -e 's/^\s*//' -e 's/\s*$//' totrim.txt>trimed.txt 主要就是利用正则表达式,^\s*表示字符串前面的零个或多个空格,\s*$表示字符串后面的零个或多个空格.

去除字符串中的空格

用C语言写一个函数,去除字符串中的空格,并返回删除的空格的个数.不允许开辟新的空间,只能申请简单类型的自动变量.时间复杂度要求为O(n). #include <bitset> #include<iostream> int deleteSpace(char * pstr); void main() { char word[]="dhkak df d fd fdjfkda dfd ff f fd da "; deleteSpace(word); std::cout&

写一个函数,实现去除字符串空格

写一个函数,实现去除字符串左右空格: <script> var str="  yex   j00  "; var newstr=str.replace(/(^\s*)|(\s*$)/g,''); document.write(newstr); </script> 写一个函数,实现去除字符串中的所有空格,不仅仅包含前后空格 : <script> var str="  yex   j00   "; var newstr=str.rep