У меня есть QString, и я хотел бы, чтобы удалить [1], [123], [4556]QString удалить "[1]" из строки, используя QRegExp
QString myStr= "aaa bbb ccc .[1]";
myStr = myStr.remove(QRegExp("\[\[0-9]\]");
но не работает, какие-либо идеи ???
У меня есть QString, и я хотел бы, чтобы удалить [1], [123], [4556]QString удалить "[1]" из строки, используя QRegExp
QString myStr= "aaa bbb ccc .[1]";
myStr = myStr.remove(QRegExp("\[\[0-9]\]");
но не работает, какие-либо идеи ???
Ваш QRegExp не работает. Первый QT требует, чтобы вы удвоили некоторые символы в зависимости от того, что вы хотели бы достичь. Во-вторых, вы не должны избегать скобок диапазона. Вам нужно двойные ЭСКАТО кронштейн вы хотите, чтобы соответствовать и не бежать за диапазон кронштейн:
QRegExp("\\[[0-9]\\]");
Это то, что вам нужно:
a.remove(QRegExp("\\[[0-9]+\\]"));
Во-первых, вам нужно двойные управляющие последовательности по всем внешние квадратные скобки, чтобы указать, что они будут отображаться в вашей строке, а затем вам нужно указать диапазон, который вы хотите сопоставить [0-9]
, и тот факт, что этот диапазон может отображаться один или несколько +
.
Это не Qt, который требует двойного выхода, это C++. Если вам нужна обратная косая черта в обычном строковом литерале, вам нужно ее избежать. – Mat
@Mat: true. QT иногда требует этого, даже если C++ не будет. Не в этом случае. –