如题,我编写了一个查找\,,\:,\r,\n的4层嵌套if语句的程序,将字符串str中的所有上述4个字符删除,if -else 感觉有点绕,能不能帮忙精简一下,程序如下:
#include<string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//功能: 循环删除字符串中的"\r" "\n""\,""\:"
string StrClean(const string &strSource)
{
string strDes = strSource;
string::size_type index = 0;
do
{
index = strDes.find("\\:");
if (index != string::npos)
{
strDes = strDes.replace(index, strlen("\\:")," ");
}
else
{
index = strDes.find("\\r");
if (index != string::npos)
{
strDes = strDes.replace(index, strlen("\\r")," ");
}
else
{
index = strDes.find("\\n");
if (index != string::npos)
{
strDes = strDes.replace(index, strlen("\\n")," ");
}
else
{
index = strDes.find("\\,");
if (index != string::npos)
{
strDes = strDes.replace(index, strlen("\\,")," ");
}
}
}
}
} while (string::npos != index);
return strDes;
}
int main()
{
string str = "123\:12\,esg\rsf\n if \: will my name\, gs\r\ntf\vs\r\nc",stre;
cout << "the source string is :" << str << endl;
//str.remove("\r\n");
//str.replace("\r\n", "");
stre=StrClean(str);
cout << "the destination string is :" << stre << endl;
return 0;
}
代码看不懂,我的方向是C#。 但我可以给你个建议, 就是用 “正则” 进行字符替换。 好处是效率高, 而且不用循环移除, 多重循环对性能影响是很大的, 不建议使用
嗯 是的 我处理大量文件时发现了,需要改进
switch case 呢?可以尝试一下。感觉你的代码过度混乱。而且,目的不够明确,\v不处理?
char [] s={"\r","\n","\,",……}
string str=str.trim(s);
这个没用过,查查看