633
צפיות
צפיות
5
תשובות
תשובות
שימוש ב replace בregex עם שפת JS.
שלום לכולם!
יש לי משתנה. השם של המשתנה מסתיים בספרה.
אני רוצה למצוא את הספרה ולהחליף אותה או ב +1 או בספרה שתגיע ממשתנה אחר.
הכיצד אני יכול לעשות את זה?
כל נסיון שלי הסתיים בכשלון. כנראה שאני לא כזה טוב ברג'קס..
תודה רבה!
5 תשובות
הנה מה שיש לי עכשיו
הבעיה בקוד הזה, זה שבמקום להחליף את הספרה, הוא מוסיף לספרה. לדוגמא: במקום לשנות את
var1
ל
var3
הוא עושה
var31
for (i=0;i<main_table.rows[wanted_row].cells.length;i++){
try{main_table.rows[wanted_row].cells[i].innerHTML=main_table.rows[wanted_row].cells[i].innerHTML.replace(/(id="{0,1}[a-z^_]+)/gi,"$1"+wanted_row);
main_table.rows[wanted_row].cells[i].innerHTML=main_table.rows[wanted_row].cells[i].innerHTML.replace(/(name="{0,1}[a-z^_]+)/gi,"$1"+wanted_row);
}
}
תשובה
אתה יכול לקחת את כל הערך של המשתנה עד התו הלפני אחרון ולהוסיף את המשתנה הרצוי לך בתו האחרון. זה כמובן אם זו הכוונה שלך ואם הבנתי אותך היטב.
זה מה שקורה כרגע.. (עם שינוי קטן)
מה שקורה כרגע, זה שהרג'קס מוצא רק את השם של המשתנה (בלי הספרה שאחריו) ואז כשהפונקציה עושה:
"$1"+wanted_row
אני מקבל את השם של המשתמש, את הספרה שהמשתנה החדש שלי הוסיף, וגם את הספרה הישנה. לדוגמא:
משתנה מקורי: var_name1
הספרה שאני מוסיף: 2
המשתנה לאחר ה replace שקורה: var_name21.
(ולא var_name12)
אז מה אני עושה בשביל למחוק את ההמשך שאחרי ה $1?
או אולי אני צריך להשתמש בשיטה שונה לגמרי?
תודה רבה!
אם הבנתי אותך נכון
אז תצטרך להוסיף את הערך שאתה מעוניין להוסיף לפני התו האחרון של המשתנה (די ברור איך עושים זאת).
הקוד שלך לא הכי ברור וגם אי אפשר לבדוק אותו מאחר וזה חלק קטן מקוד שלם.
הבעיה נפתרה
הבעיה שלי הייתה להפתר מהספרה ולשים במקומה ספרה אחרת.
אז מה שמצאתי, זה את השימוש בסוגריים ויצירת $1,$2 וכו'.
וזאת התוצאה:
replace(/(details_{0,1}D*)(d)/gi,"$1"+row_num);
ככה אני מקבל את השם של המשתנה בלי הספרה לתוך $1 ואת הספרה לתוך $2 ואז בהחלפה, אני פשוט לא שם את $2.
תודה רבה על העזרה!