我有下面的字符串(文件中的行)
值之一在双引号之间,并包含逗号来表示该值。
我只需要从双引号括起来的值中删除逗号。从双引号中删除逗号后,包围的值也需要删除那些双引号。
基本上,我希望以上代码行像这样进行转换。
我有以下版本的代码,但希望有更好的版本来实现以上功能。
std::size_t doubleQuotesStartPos = 0, doubleQuotesEndPos = 0;
while ((doubleQuotesStartPos = line.find("\"", doubleQuotesStartPos)) != std::string::npos)
{
doubleQuotesEndPos = line.find("\"", doubleQuotesStartPos + 1);
if (doubleQuotesEndPos != std::string::npos)
{
std::string tempData = line.substr(doubleQuotesStartPos + 1, doubleQuotesEndPos - doubleQuotesStartPos - 1);
std::string replacedData = tempData;
strReplace(replacedData, ",", "");
line.replace(doubleQuotesStartPos + 1, tempData.length(), replacedData);
}
doubleQuotesStartPos = doubleQuotesEndPos + 1;
}
最佳答案
为什么不使用正则表达式?我将口头翻译为:
映射到regex "\d+,[\d\.]+"
。要引用匹配的内容,可以引入捕获组:
您可以在例如记事本++。
如果您需要在C++应用程序中进行操作,则C++自C++ 11起也具有regex support。这是demo!