كيفية تحديد طريقة QString::indexOf بحيث لا تكون حساسة لعدد المسافات بين كلمتين؟
سؤال
لقد كتبت كود المصدر مثل:
int main(int argc, char *argv[]) {
QFile File (directory + "/File");
if(File.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream Stream (&File);
QString FileText;
do
{
FileText = Stream.readLine();
QString s = "start";
QString e = "end here";
int start = FileText.indexOf(s, 0, Qt::CaseInsensitive);
int end = FileText.indexOf(e, Qt::CaseInsensitive);
if(start != -1){ // we found it
QString y = FileText.mid(start + s.length(), (end - (start + s.length())));
qDebug() << y << (start + s.length()) << (end - (start + s.length()));
}
}
مشكلتي هنا هي أن int end = FileText.indexOf(e, Qt::CaseInsensitive);مع QString e = "end here";
يتم العثور عليه فقط عندما تكون هناك ثلاث مسافات بالضبط بين الكلمة "النهاية" و"هنا".وهذا أمر إشكالي، لأنه في النص الذي قرأته فإن المسافات بين هاتين الكلمتين ستختلف بالتأكيد من وقت لآخر.علاوة على ذلك، أحتاج إلى كتابة الكلمتين "النهاية" و"هنا".حاولت تقليل المشكلة إلى الأساس وآمل أن يكون لدى شخص ما فكرة/حل.
المحلول
تقليل عدد المسافات البينية إلى 1 باستخدام QString::simplified()
طريقة.
نصائح أخرى
يمكنك أيضا تجربة qregexp giveacodicetagpre.
لا تنتمي إلى StackOverflow