PDA

View Full Version : پردازش متن



AliRezaBeytari
جمعه 09 آبان 1393, 09:50 صبح
سلام دوستان.
به این متن دقت کنید :



<$
%appname% = "Hello World !";
%appstyle% = "Win8";
$>


خب ، من میخوام این متن رو پردازش کنم.
برای این کار ، اول باید متن درون $> و <$ رو به دست می آوردم :


QString content = "<$"
"%appname% = \"Hello World !\"";
"%appstyle% = \"Win8\"";
"$>";

QRegExp regExp("(<\\$)(.*(?=$|\\$>))");
regExp.setMinimal(true);
int pos = regExp.indexIn(content);

if (pos > -1)
{
QString xCode = regExp.cap(2).remove("\n");
QStringList codeList = xCode.split(";");
QString code = "";

for (int i = 0; i < codeList.length(); i++)
{
code += codeList[i] + "\n";
}

QMessageBox::information(this, "", code, QMessageBox::Ok);
}
else
{
QMessageBox::critical(this, "Error", "Error", QMessageBox::Ok);
}


خب ، حالا این قسمت رو به دست آوردم :



%appname% = "Hello World !";
%appstyle% = "Win8";


خب ، حالا من میخوام بدونم این متغیرهایی که در این متن تعریف شده رو چطور میتونم به دست بیارم ؟؟!!

ممنون میشم اگر راهنمایی کنید.

حامد مصافی
جمعه 09 آبان 1393, 10:01 صبح
%(\w+)%\s*\=\s*\"([^"]*)\"\s*;

AliRezaBeytari
جمعه 09 آبان 1393, 10:09 صبح
%(\w+)%\s*\=\s*\"([^"]*)\"\s*;

خیلی از پاسختون ممنونم.
میشه دربارش توضیح بدید.
مثلا من چطور چک کنم که متغیر appname برابر چه مقداری هست ؟؟!!

AliRezaBeytari
سه شنبه 13 آبان 1393, 12:02 عصر
کسی نمیتونه کمک کنه ؟؟!! :گریه:

حامد مصافی
سه شنبه 13 آبان 1393, 15:53 عصر
QString MainWindow::getOption(QString content, QString name)
{
QRegExp r("%" + name + "%\\s*\\=\\s*\\\"([^\"]*)\\\"");
r.indexIn(content);
return r.cap(1);
}
void MainWindow::on_pushButton_clicked()
{
QString content = "<$"
"%appname% = \"Hello World !\""
"%appstyle% = \"Win8\""
"$>";


QString appname = getOption(content, "appname");
QString appstyle = getOption(content, "appstyle");
QString message = QString("App name=%1\nApp Style=%2")
.arg(appname)
.arg(appstyle);


QMessageBox::information(this, "Regular Expression", message, QMessageBox::Ok);
}


یه نگاه به این خط کدت بنداز:

QString content = "<$"
"%appname% = \"Hello World !\"";
"%appstyle% = \"Win8\"";
"$>";
منظورم سمی‌کولون‌های آخر هم خطه!!!

AliRezaBeytari
سه شنبه 13 آبان 1393, 17:27 عصر
خیلی ممنونم.
بله ، من ; ها رو اشتباهی نوشته بودم. باید اینطوری میبودند :


QString content = "<$"
"%appname% = \"Hello World !\";"
"%appstyle% = \"Win8\";"
"$>";