字符创去除首尾空格,合并串中的多个空格为一个空格

void EraseMultiSpace(std::string &str)

{

bool alnumFlag = false;

bool spaceFlag = false;

int j=0;

int j=0;

for (int i=0; i<str.length(); )

{

if(!isspace(str.at(i)))

{

str.at(j) = str.at(i);

j++;

alnumFlag = true;

spaceFlag = false;

}

else

{

spaceFlag = true;

if(alnumFlag)

{

str.at(j) = str.at(i);

j++;

alnumFlag = false;

}

}

i++;

}

if (spaceFlag)

{

str.erase(j-1);

}

else

{

str.erase(j);

}

}

时间: 2024-10-07 07:15:57

字符创去除首尾空格,合并串中的多个空格为一个空格的相关文章

《Python CookBook2》 第一章 文本 - 去字符串两端的空格 &amp;&amp; 合并字符串 &amp;&amp; 将字符串逐字符或者逐词反转

去字符串两端的空格 任务: 获得一个开头和末尾都没有多余空格的字符串. 解决方案: 字符串对象的lstrip.rstrip和strip 方法正是为这种任务而设计的.这几个方法都不需要参数,它们会直接返回一个删除了开头.末尾或者两端的空格的原字符串的拷贝. 参考代码: >>> test_string = ' test ' >>> print '|',test_string.lstrip(),'|',test_string.rstrip(),'|',test_string.

浅谈数据结构之KMP(串中的模式匹配算法)

KMP算法是一种模式匹配算法的改进版,其通过减少匹配的次数以及使主串不回朔来减少字符串匹配的次数,从而较少算法的相应代价,但是,事件万物是普遍归中的,KMP算法的有效性也是有一定的局限的,我将在本文的最后也讨论这个算法的局限性. 一般的匹配算法: KMP基本概念引入: 但是,其实我们会发现,上面的中间两个匹配步骤是没有必要的,因为他们的第一个匹配字母就不相同,完全没有可比性,而当我们在第四次匹配的时候,其实我们从模式串中就可得知,只有当模式串滑到这个地方的时候,它的匹配才是最有价值的,因为从模式

将一个字串中含有全角的数字字符、字母、空格或&#39;%+-()&#39;字符转换为相应半角字符

/** * 将一个字串中含有全角的数字字符.字母.空格或'%+-()'字符转换为相应半角字符 * * @access public * @param string $str 待转换字串 * * @return string $str 处理后字串 */ function make_semiangle($str) { $arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' =>

合并字符串中连续的多个空格的C代码实现

1.问题描述 将某一字符串中连续出现的多个空格合并为一个空格,如果合并之后的字符串的首尾有空格,则将其去掉. 例如," This is a string! "是一个包含多个空格的字符串,要求其变成"This is a string!"的形式. 2.C代码实现 /********************************************************************** * 版权所有 (C)2015, Zhou Zhaoxiong. *

删除模式串中出现的字符

删除模式串中出现的字符,如"welcome to asted",模式串为"aeiou"那么得到的是"wlcm t std". #include<iostream> #include<cstring> using namespace std; char *re(char *str,char *model) { if(str==NULL||model==NULL) return NULL; int Hash[26]={0};

返回主串中子串及其后的所有字符

题目:           写一个函数模拟c++中的strstr函数.该函数的返回值是主串中字符子串的位置以后的所有字符.请不要使用任何c程序已有的函数来完成. #include<iostream> using namespace std; const char* strstr1(const char* string, const char* strCharSet) { for (int i = 0; string[i] != '\0'; i++) { int j = 0; int temp

第九十题(1.不开辟暂时空间交换 2.删除串中指定字符 3.推断链表中存在环)

1.不开辟用于交换数据的暂时空间,怎样完毕字符串的逆序 2.删除串中指定的字符 3.推断单链表中是否存在环 分析和代码: 1,不开辟用于交换的暂时空间,能够用异或交换.或者用字符串的'\0'位置的空间(打个擦边球,使用已有空间.不算开辟). void switch1(char* str) //使用异或交换 { int len = strlen(str); for (int i = 0; i < len / 2; i++) str[i] ^= str[len - i - 1] ^= str[i]

java 判断一个字串中的字符全是字母

记录一个方法,用来判断一个字串中字符是否全为字母 public class MainClass { public static void main(String[] args){ String str = "hhhggdxszfff"; boolean is_boolean = isPhonticName(str); System.out.println(is_boolean); } public static boolean isPhonticName(String str) { c

C语言:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,-将a所指字符串中的字符和b所指字符串中的字符的顺序交叉,-将形参s所指字符串中的所有数字字符顺序前移,

//函数fun功能:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,s所指串中剩余的字符形成的新串放在t所指的数组中. 1 #include <stdio.h> 2 #include <string.h> 3 4 void fun(char *s, char t[]) 5 { 6 int i=0,j=0; 7 while (s[i] != '\0') 8 { 9 if (i % 2 == 0) 10 { 11 if ((int)(s[i]) % 2 == 1)//判断A