Допустим, есть строка: QString str = "Название книги \"Python 3\"";
Мне нужно разделить данную строку на список, в котором будет следующая картина:
{"Название", "книги", "Python 3"}
В официальной документации смотрел, не нашёл :(
Здравствуйте.
Есть несколько способов.
1. Через регулярные выражения, тынц.
2. Убрать кавычки и разделить строку в список строк по пробелу, тыц и тынц (и предварительно тыщ).
ИМХО Вы не смотрели документацию.... либо краем глаза в поисках готового рецепта.
Регулярные выражения я смотрел... В документации я нашел метод, который удаляет подстроку в строке между определенными символами, которые настраиваешь с помощью QRegExp. Но этот метод возвращает не удаленную подстроку, а новую строку без подстроки.
А второй способ не плох, но там лишняя писанина... Сначала убрать кавычки, разделить по пробелу, потом соеденить последние два (а может и три и четыре?) элемента.
Я бы хотел сделать все с помощью одного метода, типа так:
QString String = "Это \"новая строка\"";
String.metod(QRegExp regExp);
// String = "Новая строка"
Ещё раз подмечу, мне нужно чтобы всё содержимое в кавычках оказалось в одном элементе. Разделяя строку на элементы по пробелу, я получаю несколько элементов, которые должны быть одним. Да, я представляю алгоритм для их склейки... Но ведь есть способ проще?
Nicky23, преждевременная оптимизация — корень многих проблем. Можно для красивого решения этой задачи потратить два дня, а можно написать два прозрачных вызова стандартных функций.
Nicky23, то, что Вы хотите, по-моему уже "синтаксический сахар".
Так что используйте регулярки. Если Вам нужны постоянно такие манипуляции, то КЭП подсказывает, что проще будет сделать свою функцию.
Если создатели фреймворка будут включать любой "чих", то он разрастётся до невероятных размеров и все эти функции просто будут в файлах фреймворка (и всё равно будем всем чего-то нехватать), а не в Ваших.