ورود

View Full Version : چرا replace بیشتر از یک بار جواب نمی ده



DotNet_King
شنبه 26 مرداد 1387, 15:14 عصر
با سلام به دوستان گرامی
من این در رشته متنی را می خواهم کلمات خاصی رو با آدرس عکس جایگزین کنم. این کد رو نوشتم ولی ولی کد فقط اولین کلمه رو replace می کنه و بقیه رو تغییر نمی ده. باید چی کار کنم

متنی که می قصد دارم در اون تغییرات ایجاد بشه!


سلام [چشمک][شیطان][شیطان]تست[سبز] یسبنبی
یسبنبیسنل
یسب
سب
یسب
یسب
[نیشخند][شیطان][چشمک]



کدی که من نوشتم



function ConvertTxt()
{

var x=document.getElementById("TXT_IN").innerText ;
var FinText="";
//insert Pic addterss here
x.search("[خنده]");
FinText=x.replace("[خنده]","<img src='Image/p8.gif' ");
FinText=FinText.replace("[بوس]","<img src='Image/p2.gif'>");
FinText=FinText.replace("[تعجب]","<img src='Image/p3.gif'>");
FinText=FinText.replace("[چشمک]","<img src='Image/p21.gif' >");
FinText=FinText.replace("[زبان]","<img src='Image/p1.gif'>");
FinText=FinText.replace("[شیطان]","<img src='Image/p5.gif'>");
FinText=FinText.replace("[ناراحت]","<img src='Image/p6.gif'>");
FinText=FinText.replace("[گریه]","<img src='Image/p7.gif' >");
FinText=FinText.replace("[سبز]","<img src='Image/p9.gif' >");
FinText=FinText.replace("[نیشخند]","<img src='Image/p10.gif' >");
FinText=FinText.replace("[قلب]","<img src='Image/p11.gif' >");
FinText=FinText.replace("[سوال]","<img src='Image/p12.gif'>");
FinText=FinText.replace("[خجالت]","<img src='Image/p13.gif' >");
FinText=FinText.replace("[آبی]","<img src='Image/p14.gif' >");

document.write(FinText);
}



مثلا در رشته بالا اولین شیطان رو با کد عکس عوض می کنه ولی به شیطان های بعدی رو نه

ممنونم

امید امرایی
شنبه 26 مرداد 1387, 17:19 عصر
باید از RegExp به جای رشته استفاده کنید


FinText=FinText.replace(/[بوس]/g,"<img src='Image/p2.gif'>");

DotNet_King
شنبه 26 مرداد 1387, 19:26 عصر
باید از RegExp به جای رشته استفاده کنید


FinText=FinText.replace(/[بوس]/g,"<img src='Image/p2.gif'>");


این رج ایکس جزیی از جاوا اسکریپته؟ منبعی خوبی از این مقوله ندارید شما؟

امید امرایی
شنبه 26 مرداد 1387, 22:39 عصر
RegEx مخفف Regular Expression هستش به معنی عبارات با قاعده و همه زبان ها تقریبا به نوعی ازش استفاده می کنن
البته در مورد تابع Replace چندان با معنیش سازگار نیست اما در کل زمانی استفاده می شه که می خوایم یک نمونه خاص از رشته ها رو تعیین کنیم
به عنوان مثال :


/[a-zA-Z]/
یعنی مجموعه حروف a تا Z

DotNet_King
یک شنبه 27 مرداد 1387, 14:05 عصر
سلام دوست عزیز
من این کار رو که گفتیدید کردم ولی جواب عجیبی گرفتم! کاملا شاخ در اوردم!
لطفا به این عکس ها یه نگاه بندازید تا متوجه عرض بنده بشید! من یه عکس می خواستم بگیرم! سه تا می ده !

به نظرتون راه حل چیه؟

این هم کد هام



function ConvertTxt()
{

var x=document.getElementById("TXT_IN").value;
var FinText="";
//insert Pic addterss here
FinText=x;
FinText=FinText.replace(/[خنده]/g,"<img src='Image/p8.gif'>");
FinText=FinText.replace(/[بوس]/g,"<img src='Image/p2.gif'>");
FinText=FinText.replace(/[تعجب]/g,"<img src='Image/p3.gif'>");
FinText=FinText.replace(/[چشمک]/g,"<img src='Image/p21.gif'>");
FinText=FinText.replace(/[زبان]/g,"<img src='Image/p1.gif'>");
FinText=FinText.replace(/[شیطان]/g,"<img src='Image/p5.gif'>");
FinText=FinText.replace(/[ناراحت]/g,"<img src='Image/p6.gif'>");
FinText=FinText.replace(/[گریه]/g,"<img src='Image/p7.gif'>");
FinText=FinText.replace(/[سبز]/g,"<img src='Image/p9.gif'>");
FinText=FinText.replace(/[نیشخند]/g,"<img src='Image/p10.gif'>");

FinText=FinText.replace(/[قلب]/g,"<img src='Image/p11.gif'>");
FinText=FinText.replace(/[سوال]/g,"<img src='Image/p12.gif'>");
FinText=FinText.replace(/[خجالت]/g,"<img src='Image/p13.gif'>");
FinText=FinText.replace(/[آبی]/g,"<img src='Image/p14.gif'>");


document.write(FinText);
}

امید امرایی
یک شنبه 27 مرداد 1387, 17:12 عصر
شاید به دلیل استفاده از حروف فارسی باشه
از حروف لاتین استفاده کنید