function pl2Uni(string, driv){ var uni = new Array(); uni[0] = 'UNI261'; uni[1] = 'UNI260'; uni[2] = 'UNI281'; uni[3] = 'UNI280'; uni[4] = 'UNI322'; uni[5] = 'UNI321'; uni[6] = 'UNI324'; uni[7] = 'UNI323'; uni[8] = 'UNI211'; uni[9] = 'UNI210'; uni[10] = 'UNI347'; uni[11] = 'UNI346'; uni[12] = 'UNI377'; uni[13] = 'UNI378'; uni[14] = 'UNI379'; uni[15] = 'UNI380'; uni[16] = 'UNI262'; uni[17] = 'UNI263'; var pl = new Array(); pl[0] = /(±|±|ą)/; pl[1] = /(ˇ|·)/; pl[2] = /(ę)/; pl[3] = /(Ę)/; pl[4] = /(ł)/; pl[5] = /(Ł)/; pl[6] = /(ń)/; pl[7] = /(Ń)/; pl[8] = /(ó)/; pl[9] = /(Ó)/; pl[10] = /(¶|¶)/; pl[11] = /(¦|¦)/; pl[12] = /(¬|¬)/; pl[13] = /(Ľ|Ą)/; pl[14] = /(Ż)/; pl[15] = /(ż)/; pl[16] = /(ć)/; pl[17] = /(Ć)/; var plWin = new Array(); plWin[0] = '±'; plWin[1] = '·'; plWin[2] = 'ę'; plWin[3] = 'Ę'; plWin[4] = 'ł'; plWin[5] = 'Ł'; plWin[6] = 'ń'; plWin[7] = 'Ń'; plWin[8] = 'ó'; plWin[9] = 'Ó'; plWin[10] = '¶'; plWin[11] = '¦'; plWin[12] = '¬'; plWin[13] = 'Ą'; plWin[14] = 'Ż'; plWin[15] = 'ż'; plWin[16] = 'ć'; plWin[17] = 'Ć'; var result = new Array(); result[0] = string; for(i=0; i < pl.length; i++){ if(driv == 1) result[i+1] = result[i].replace(pl[i], uni[i]); else if(driv == 0) result[i+1] = result[i].replace(uni[i], plWin[i]); } return result[i]; }
wywołać go można tak
pl2Uni('jaki¶ tam tekst', 1) // zakoduje stringa wstawia za znaki PL odpowiedni kod z tablicy UNI pl2Uni('jakiUNI347 tam tekst', 0) // rozkoduje stringa zamieni kod UNI na znak PL
jak pisałem kod działa ale gdy wywołam go tak że ten sam polski znak wystepuje 2-razy w stringu np
to zamieni mi tylko pierwszy znak '±' i pierwszy znak '¶'. Problem leży tutaj że metoda replace() zamienia tylko pierwszy znak ± w stringu i piersze ¶.
pl2Uni('±± ¶¶', 1)
I moje pytanie czy jest jaka¶ metoda która zadziała jak replace ale zamieni mi od razu wszystkie znaki w stringu nie tylko pierwszy napotkany, czy będe musiał rozbijać stringa na pojedyńcze znaki i sprawdzać każdy znak osobno, co nie byłoby zbyt szczę¶liwym rozwi±zaniem gdyż przeszukiwane stringi s± bardzo długie