我有下面的字符串(文件中的行)



值之一在双引号之间,并包含逗号来表示该值。

我只需要从双引号括起来的值中删除逗号。从双引号中删除逗号后,包围的值也需要删除那些双引号。

基本上,我希望以上代码行像这样进行转换。



我有以下版本的代码,但希望有更好的版本来实现以上功能。

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!

10-04 14:54