String titosítás c#-ban valami nem jó?
Szeretnék egy string titkosítót csinálni.
pld.
string str = "Ez egy szöveg";
Meg van, hogy az ABC betűit mire cserélje ki. PLD. A = A2 B= C3 C = 4 (ez csak példa). Ha String Replace metódussal csinálom akkor az történik, hogy a már kicserélt karaktereket is kicseréli pld.:
string str = "abc";
str = str.Replace("a" , "A2"); (A2BC)
str = str.Replace("b" , "C3"); (A2C3C)
str = str.Replace("c" , "4"); (A2434)
A gond, hogy kicserélte a előző C-t is ami a 2.-nál került oda. Szóval nekem A2C34 kéne, hogy legyen.
Nem tudom, hogy lehetne megcsinálni.
A legprimitívebb megoldás, hogy a
str = str.Replace("b" , "C3"); (A2C3C)
str = str.Replace("c" , "4"); (A2434)
utasítások sorrendjét egyszerűen megcseréled, de gondolom, ez csak egy része egy összetettebb algoritmusnak.
Iterálj végig a string karakterein egyesével egy ciklussal és a ciklusmagban hívd meg a kicserélő függvényed az aktuális karakterre!
G.
"Iterálj végig a string karakterein egyesével"
Istenkáromlás! Meg van írva a riplész függvény, nehogy írjon egy ciklust!!
Mint láthatod a replace függvény nem alkalmas olyan esetben, ha a forrás és célhalmaz nem diszjunkt.
A ciklussal iterálás tökéletes megoldás.
A titkosítás minőségét most ne tárgyaljuk.
73%, szerintem a string.replace a háttérben ugyan úgy végigszalad a karaktereken (vagy részstringeken, de ez már részletkérdés).
G.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!