كيفية تحديد طريقة QString::indexOf بحيث لا تكون حساسة لعدد المسافات بين كلمتين؟

StackOverflow https://stackoverflow.com//questions/9622918

  •  09-12-2019
  •  | 
  •  

سؤال

لقد كتبت كود المصدر مثل:

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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top