История изменений
Исправление Xintrea, (текущая версия) :
Сделал вот так вот, на первый взгляд работает. Во всяком случае тесты в топике проходят правильно:
QStringList FindScreen::textDelimiterDecompose(QString text)
{
QStringList list;
int len=text.length();
QString buf;
bool quoted=false;
QString delimiter;
delimiter.append(" ");
delimiter.append("'");
delimiter.append('.');
delimiter.append(',');
delimiter.append(';');
delimiter.append(':');
delimiter.append('-');
delimiter.append('?');
delimiter.append('!');
for(int i=0; i<len; i++)
{
// Если обнаружен разделитель
if(delimiter.contains( text[i] ))
{
if( !quoted )
{
if(buf.length() > 0)
{
list.append(buf);
buf = "";
}
}
else
buf += text[i];
}
else if(text[i] == '"')
{
quoted = (quoted == true ? false : true);
}
else
{
buf += text[i];
}
}
if(buf.length() > 0)
list.append(buf);
qDebug() << "Find split list:" << list;
return list;
}
Исходная версия Xintrea, :
Сделал вот так вот, на первый взгляд работает:
QStringList FindScreen::textDelimiterDecompose(QString text)
{
QStringList list;
int len=text.length();
QString buf;
bool quoted=false;
QString delimiter;
delimiter.append(" ");
delimiter.append("'");
delimiter.append('.');
delimiter.append(',');
delimiter.append(';');
delimiter.append(':');
delimiter.append('-');
delimiter.append('?');
delimiter.append('!');
for(int i=0; i<len; i++)
{
// Если обнаружен разделитель
if(delimiter.contains( text[i] ))
{
if( !quoted )
{
if(buf.length() > 0)
{
list.append(buf);
buf = "";
}
}
else
buf += text[i];
}
else if(text[i] == '"')
{
quoted = (quoted == true ? false : true);
}
else
{
buf += text[i];
}
}
if(buf.length() > 0)
list.append(buf);
qDebug() << "Find split list:" << list;
return list;
}