PDA

View Full Version : سوال فیلتر کلمات یک جمله و جایگزینی آن



nasser70
دوشنبه 30 دی 1392, 18:46 عصر
سلام.
میخواهم با جاواسکریپت بعضی از کلمات یک جمله رو فیلتر کنم.
من کلمات فیلتر شونده و کلمات جایگزین رو به صورت آبجکت دارم :


var sheklak = [
{'sign2':/dog/, 'adress2':'1'},
{'sign2':/gav/ , 'adress2':'5'},
{'sign2':/folan/ , 'adress2':':6'}

];

حال میخوام در یک جمله اینا رو فیلتر کنم و آبجکت دوم رو جایگزینش کنم.
مثلا اگر در یک جمله dog وجود داشت با adress2 جایگزین بشه.ممنون میشم کمک کنید.
باتشکر

Javidhb
دوشنبه 30 دی 1392, 23:32 عصر
برای اینکه تمام dog های توی نوشته، جایگزین بشن... باید از 'g' استفاده کنید که مخفف global هست:


var txt = "dog - cat - gav - whale - goat - dog - dog - folan";
var sheklak = [
{'sign2':/dog/g, 'adress2':'1'},
{'sign2':/gav/g , 'adress2':'5'},
{'sign2':/folan/g , 'adress2':':6'}
];

//به ازای هر المنت توی آرایه حلقه رو اجرا کنه
for(var i = 0; i<sheklak.length; i++){
txt = txt.replace(sheklak[i].sign2, sheklak[i].adress2); //جایگزین کردن
}

nasser70
شنبه 05 بهمن 1392, 10:34 صبح
سلام ممنون از شما جواب داد.
ولی یک مشکلی هست اینکه تو اینترنت اکسپلورر اجرا نمیشه.
میشه در این مورد هم راهنمایی کنید؟
باتشکر

Javidhb
شنبه 05 بهمن 1392, 12:55 عصر
با کدوم نسخه ie؟ کدتون رو کامل بزارید..
با IE 10 تست کردم، درست اجرا شد...

nasser70
یک شنبه 06 بهمن 1392, 21:31 عصر
سلام واقعا ممنون آقا جاوید
یک مشکلی در فیلتر کلمات هست که بعضی کلمات رو فیلتر نمیکنه.
مثلا خخخ رو فیلتر نمیکنه.
یا برای کلماتی مثل // که میخوام فیلتر بشه عمل نمیکنه
میشه یک راهنمایی دیگه بفرمایید؟
باتشکر

Javidhb
سه شنبه 08 بهمن 1392, 23:57 عصر
در مورد Regex توی جاوااسکریپت سرچ کنید...

/ توی regex جز عبارات رزرو شده اس برای همین باید همیشه escape بشه یعنی قبلش از \ استفاده کنید تا معنی / رو پیدا کنه نه اون معنی که توی regex داره...

var txt = "dog - cat - gav - whale - goat - dog - dog - خخخ - //";
var sheklak = [
{'sign2':/dog/g, 'adress2':'1'},
{'sign2':/gav/g , 'adress2':'5'},
{'sign2':/folan/g , 'adress2':':6'},
{'sign2':/خخخ/g , 'adress2':'2'},
{'sign2':/\/\//g , 'adress2':'9'},
];

//به ازای هر المنت توی آرایه حلقه رو اجرا کنه
for(var i = 0; i<sheklak.length; i++){
txt = txt.replace(sheklak[i].sign2, sheklak[i].adress2); //جایگزین کردن
}