Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] podmiana znaków
Forum PHP.pl > Forum > Po stronie przegl±darki > JavaScript
dyktek
Witam, napisałem sobie kodzik, który podmienia mi litery PL na okre¶lony kod, skrypt wygl±da tak

  1. function pl2Uni(string, driv){
  2.  
  3. var uni = new Array();
  4.  
  5. uni[0] = 'UNI261';
  6. uni[1] = 'UNI260';
  7. uni[2] = 'UNI281';
  8. uni[3] = 'UNI280';
  9. uni[4] = 'UNI322';
  10. uni[5] = 'UNI321';
  11. uni[6] = 'UNI324';
  12. uni[7] = 'UNI323';
  13. uni[8] = 'UNI211';
  14. uni[9] = 'UNI210';
  15. uni[10] = 'UNI347';
  16. uni[11] = 'UNI346';
  17. uni[12] = 'UNI377';
  18. uni[13] = 'UNI378';
  19. uni[14] = 'UNI379';
  20. uni[15] = 'UNI380';
  21. uni[16] = 'UNI262';
  22. uni[17] = 'UNI263';
  23.  
  24.  
  25. var pl = new Array();
  26.  
  27. pl[0] = /(±|±|ą)/;
  28. pl[1] = /(ˇ|·)/;
  29. pl[2] = /(ę)/;
  30. pl[3] = /(Ę)/;
  31. pl[4] = /(ł)/;
  32. pl[5] = /(Ł)/;
  33. pl[6] = /(ń)/;
  34. pl[7] = /(Ń)/;
  35. pl[8] = /(ó)/;
  36. pl[9] = /(Ó)/;
  37. pl[10] = /(¶|¶)/;
  38. pl[11] = /(¦|¦)/;
  39. pl[12] = /(¬|¬)/;
  40. pl[13] = /(Ľ|Ą)/;
  41. pl[14] = /(Ż)/;
  42. pl[15] = /(ż)/;
  43. pl[16] = /(ć)/;
  44. pl[17] = /(Ć)/;
  45.  
  46. var plWin = new Array();
  47.  
  48. plWin[0] = '±';
  49. plWin[1] = '·';
  50. plWin[2] = 'ę';
  51. plWin[3] = 'Ę';
  52. plWin[4] = 'ł';
  53. plWin[5] = 'Ł';
  54. plWin[6] = 'ń';
  55. plWin[7] = 'Ń';
  56. plWin[8] = 'ó';
  57. plWin[9] = 'Ó';
  58. plWin[10] = '¶';
  59. plWin[11] = '¦';
  60. plWin[12] = '¬';
  61. plWin[13] = 'Ą';
  62. plWin[14] = 'Ż';
  63. plWin[15] = 'ż';
  64. plWin[16] = 'ć';
  65. plWin[17] = 'Ć';
  66.  
  67. var result = new Array();
  68.  
  69. result[0] = string;
  70.  
  71. for(i=0; i < pl.length; i++){
  72. if(driv == 1)
  73. result[i+1] = result[i].replace(pl[i], uni[i]);
  74. else if(driv == 0)
  75. result[i+1] = result[i].replace(uni[i], plWin[i]);
  76. }
  77. return result[i];
  78. }


wywołać go można tak
  1. pl2Uni('jaki¶ tam tekst', 1) // zakoduje stringa wstawia za znaki PL odpowiedni kod z tablicy UNI
  2. 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
  1. 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
dyktek
poszperałem troche i przerobiłem nieco t± pętle teraz wygl±da to tak
  1. for(i=0; i < pl.length; i++){
  2. if(driv == 1)
  3. result[i+1] = result[i].replace(RegExp(pl[i], 'g'), uni[i]);
  4. else if(driv == 0)
  5. result[i+1] = result[i].replace(RegExp(uni[i], 'g'), plWin[i]);
  6. }
  7. return result[i];


ale pomimo w tej chwili funkcja działa tak jakby w jedn± stronę, może mi kto¶ podpowiedzieć czy dobrze kombinuje
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.