字符串,如何将:,替换为-?

时间:2021-03-28 14:54:13
菜鸟问:比如字符串12-12-12-11:11:11,如何转化为12-12-12-11-11-11,就是把:,转换成-?

8 个解决方案

#1


遍历字符串(下标。指针均可)
遇到:就换成-

#2


俺是菜鸟,不会写,请简单写一下

#3


我不会替换啊??

#4


char str[] = "12-12-12-11:11:11"
char *p = str;
while(*p != 0)
{
    if(*p == ':')
        *p = '-';
    p++;
}
随手写的

#5


string的replace吧

#6


引用 5 楼 lovestefanie 的回复:
string的replace吧

下面是一个检查一个字符串中是否有'.'的函数,该函数将找到的'.'转化为'_'。

inline void checkName(string& name)
{
std::string::size_type startpos = 0;
while (startpos!= std::string::npos)
{
    startpos = name.find('.');   //找到'.'的位置
    if( startpos != std::string::npos ) //std::string::npos表示没有找到该字符
    {
      name.replace(startpos,1,"_"); //实施替换,注意后面一定要用""引起来,表示字符串
    }
}
}
来自百度hI的:在狂风中摇曳

#7


CString::Replace

int Replace( TCHAR chOld, TCHAR chNew );
int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

返回值:返回被替换的字符数。如果这个字符串没有改变则返回零。

参数: chOld 要被chNew替换的字符。  
chNew 要用来替换chOld的字符。  
lpszOld 一个指向字符串的指针,该字符串包含了要被lpszNew替换的字符。  
lpszNew 一个指向字符串的指针,该字符串包含了要用来替换lpszOld的字符。  

说明:
此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用chNew现场替换chOld。函数的第二个原形用lpszNew指定的字符串替换lpszOld指定的子串。
在替换之后,该字符串有可能增长或缩短;那是因为lpszNew和lpszOld的长度不需要是相等的。两种版本形式都进行区分大小写的匹配。

示例:
// 第一个例子,old 和new具有相同的长度。
CString strZap( "C--" );
int n = strZap.Replace('-', '+' );
ASSERT( n == 2 );
ASSERT(strZap == "C++" );
// 第二个例子,old和new具有不同的长度。
CString strBang("Everybody likes ice hockey");
n = strBang.Replace( "hockey", "golf" );
ASSERT( n == 1 )
n = strBang.Replace ( "likes" , "plays" );
ASSERT( n == 1 )
n = strBang.Replace( "ice", NULL );
ASSERT( n == 1 )
ASSERT( strBang == "Everybody plays golf" )
// 注意,现在在你的句子中有了一个额外的空格。
// 要移走这个额外的空格,可以将它包括在要被替换的字符串中,例如,“ice”。

#8


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
        char str[] = "12-12-12-11: 11: 11";
        char newstr[20];
        char *p1;
        char *p2;
        int len;

        p1 = str;
        while((p2 = strstr(p1, ": "))){
                len = p2-p1;
                strncat(newstr, p1, len);
                strcat(newstr, "-");
                p1=p2+2;
        }
        strcat(newstr, p1);
        printf("%s\n",newstr);
        return 0;
}

#1


遍历字符串(下标。指针均可)
遇到:就换成-

#2


俺是菜鸟,不会写,请简单写一下

#3


我不会替换啊??

#4


char str[] = "12-12-12-11:11:11"
char *p = str;
while(*p != 0)
{
    if(*p == ':')
        *p = '-';
    p++;
}
随手写的

#5


string的replace吧

#6


引用 5 楼 lovestefanie 的回复:
string的replace吧

下面是一个检查一个字符串中是否有'.'的函数,该函数将找到的'.'转化为'_'。

inline void checkName(string& name)
{
std::string::size_type startpos = 0;
while (startpos!= std::string::npos)
{
    startpos = name.find('.');   //找到'.'的位置
    if( startpos != std::string::npos ) //std::string::npos表示没有找到该字符
    {
      name.replace(startpos,1,"_"); //实施替换,注意后面一定要用""引起来,表示字符串
    }
}
}
来自百度hI的:在狂风中摇曳

#7


CString::Replace

int Replace( TCHAR chOld, TCHAR chNew );
int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

返回值:返回被替换的字符数。如果这个字符串没有改变则返回零。

参数: chOld 要被chNew替换的字符。  
chNew 要用来替换chOld的字符。  
lpszOld 一个指向字符串的指针,该字符串包含了要被lpszNew替换的字符。  
lpszNew 一个指向字符串的指针,该字符串包含了要用来替换lpszOld的字符。  

说明:
此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用chNew现场替换chOld。函数的第二个原形用lpszNew指定的字符串替换lpszOld指定的子串。
在替换之后,该字符串有可能增长或缩短;那是因为lpszNew和lpszOld的长度不需要是相等的。两种版本形式都进行区分大小写的匹配。

示例:
// 第一个例子,old 和new具有相同的长度。
CString strZap( "C--" );
int n = strZap.Replace('-', '+' );
ASSERT( n == 2 );
ASSERT(strZap == "C++" );
// 第二个例子,old和new具有不同的长度。
CString strBang("Everybody likes ice hockey");
n = strBang.Replace( "hockey", "golf" );
ASSERT( n == 1 )
n = strBang.Replace ( "likes" , "plays" );
ASSERT( n == 1 )
n = strBang.Replace( "ice", NULL );
ASSERT( n == 1 )
ASSERT( strBang == "Everybody plays golf" )
// 注意,现在在你的句子中有了一个额外的空格。
// 要移走这个额外的空格,可以将它包括在要被替换的字符串中,例如,“ice”。

#8


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
        char str[] = "12-12-12-11: 11: 11";
        char newstr[20];
        char *p1;
        char *p2;
        int len;

        p1 = str;
        while((p2 = strstr(p1, ": "))){
                len = p2-p1;
                strncat(newstr, p1, len);
                strcat(newstr, "-");
                p1=p2+2;
        }
        strcat(newstr, p1);
        printf("%s\n",newstr);
        return 0;
}