Skip to content

Instantly share code, notes, and snippets.

@dio
Created April 2, 2011 10:30
Show Gist options
  • Save dio/899382 to your computer and use it in GitHub Desktop.
Save dio/899382 to your computer and use it in GitHub Desktop.
parsing raw detail
// bahan bumbu
QString detailRaw = "Bahan-bahan/bumbu-bumbu :\n\n150 gram beras, dicuci bersih 2 batang serai, dimemarkan 1 cm jahe, dimemarkan 1750 ml air 1 blok kaldu ayam 1/2 sendok teh garam Bahan kuah ayam kuning: 1 ekor ayam kampung, dibagi empat bagian 2 batang serai, dimemarkan 4 lembar daun jeruk, dibuang tulangnya 2 cm lengkuas, dimemarkan 2 lembar daun salam 21/2 sendok teh garam 1/2 sendok teh merica bubuk 1/2 sendok teh gula pasir 1.000 ml air Bumbu halus: 10 butir bawang merah 6 siung bawang putih 4 butir kemiri sangrai 1 cm jahe 1/2 sendok teh ketumbar 3 cm kunyit Bahan pelengkap: 100 gram kerupuk kanji 1 sendok makan bawang merah goreng 1 sendok makan seledri, diiris halus\n\n\n\n\nCara Pengolahan : 1. Masak beras, serai, dan jahe di dalam air dan kaldu blok sampai meresap dan kental. Sisihkan. 2. Kuah ayam. Tumis bumbu halus, daun salam, serai, lengkuas, dan daun salam sampai harum. Masukkan ayam. Aduk sampai berubah warna. Masukkan air. Masak sampai matang dan bumbu meresap ke ayam. 3. Angkat ayamnya. Goreng ayam sebentar asal kecoklatan. Suwir-suwir ayam. 4. Sajikan bubur bersama ayam suwir, bahan pelengkap, dan kuah kuningnya. Untuk 5 porsi";
QString bahanDanBumbu;
QString caraOlah;
QStringList l = detailRaw.split(":");
caraOlah = l.at(l.size() - 1).trimmed().remove('\n');
if(l.size() > 1){
QStringList titles;
for(int j = 1; j < l.size() - 1; j++){
QString s = l.at(j).trimmed().remove('\n');
int bh = s.lastIndexOf("bahan", -1, Qt::CaseInsensitive);
int bum = s.lastIndexOf("bumbu", -1, Qt::CaseInsensitive);
int car = s.lastIndexOf("cara", -1, Qt::CaseInsensitive);
QList<int> idxList;
idxList << bh << bum << car;
qSort(idxList);
int sepIdx = idxList.at(idxList.size() - 1);
QString sClean = s.mid(0,sepIdx).trimmed();
QString t = s.mid(sepIdx).trimmed();
titles.append(t);
QRegExp reg("\\s+");
QStringList lsC = sClean.split(reg,QString::SkipEmptyParts);
QStringList sBumL;
QStringList qL;
QString sBum;
for(int k = 0; k < lsC.size() - 1; k++){
bool isOk;
QString sP = lsC.at(k);
sP.toInt(&isOk);
if(!isOk){
sBum += sP + " ";
//qDebug() << "part: " << sP;
}
else
{
qL.append(sP);
if(!sBum.isEmpty()){
sBumL.append(sBum);
sBum.clear();
}
}
}
for(int n = 0; n < sBumL.size(); n++){
qDebug() << "part: " << qL.at(n) << " " << sBumL.at(n).trimmed();
}
}
}
/*for(int i = 1; i < l.size() - 1; i++){
qDebug() << "line-" << i << " " << l.at(i).trimmed().remove('\n');
}*/
//qDebug() << "bahanDanBumbu: " << bahanDanBumbu;
//for(int i = 0; i < l.size(); i++){
//qDebug() << "line-" << i << "[" << l.at(i).trimmed().remove('\n') << "]";
//if(i == 1)
// bahanDanBumbu = l.at(i).trimmed().remove('\n');
//if(i == l.size() - 1)
//}
// Cara olah
//int untukIdx = caraOlah.lastIndexOf("untuk",-1,Qt::CaseInsensitive);
//qDebug() << "idx: " << caraOlah.length() - untukIdx;
/*
QString porsi = caraOlah.mid(untukIdx);
qDebug() << "porsi: " << porsi;
QString caraOlahClean = caraOlah.mid(0, untukIdx);
qDebug() << "caraOlahClean: " << caraOlahClean.trimmed();
QStringList col = caraOlahClean.split(".");
int sidx;
for(int j = 0; j < col.size(); j++){
QString s = col.at(j).trimmed().remove('\n');
bool isOk;
int si = s.toInt(&isOk);
//qDebug() << "isNumber? " << isOk;
if(!isOk && !s.isEmpty())
qDebug() << "step-" << sidx << "[" << s << "]";
else{
sidx = si;
}
}*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment