Witam, napisałem sobie kodzik, który podmienia mi litery PL na określony kod, skrypt wygląda tak
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
pl2Uni('ąą śś', 1)
to zamieni mi tylko pierwszy znak 'ą' i pierwszy znak 'ś'. Problem leży tutaj że metoda replace() zamienia tylko pierwszy znak ą w stringu i piersze ś.
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