Почему запятая опускается в начале строки, используя QString :: right? - PullRequest
0 голосов
/ 19 сентября 2018

Ответ QString заменить символы вне кавычек Я наткнулся на странное поведение.

Выполнение этого кода:

foreach (const QString &key, json.keys()) {
    const QJsonValue &value(json.value(key));

    qDebug() << key << value.toString().right(key.length());
}

с этим json, A :

QJsonObject json {
    {"thing1", "thing1value1"},
    {"thing2", "thing2value2"},
    {"thing3", "thing3value3"}
};

и с этим json, B (обратите внимание на запятую после thing2):

QJsonObject json {
    {"thing1", "thing1value1"},
    {"thing2", "thing2,value2"},
    {"thing3", "thing3value3"}
};

inв обоих случаях выдается:

"thing1" "value1"
"thing2" "value2"
"thing3" "value3"

Не должно быть:

"thing1" "value1"
"thing2" ",value2"
"thing3" "value3"

во втором случае B ?

1 Ответ

0 голосов
/ 19 сентября 2018

Функция QString::right

Возвращает подстроку, содержащую n крайний справа символов строки.

[Дополнительный акцент мой]

Поскольку длина ключевой строки равна 6, тогда будут возвращены самые правые символы 6, что дастВы "value2" без запятой.

Если вы хотите получить строку без начального ключа, вы можете использовать mid вместо этого:

value.toString().mid(key.length())

Для вашегосценарий использования Я бы предпочел midRef, поскольку на самом деле нет необходимости создавать копию подстроки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...