Skocz do zawartości

Być może prosty problem z operacjami na stringu.


m97

Rekomendowane odpowiedzi

Witam postanowiłem napisać funkcję, która taki string: C:\x y\xx\x yz\xxx

zmieni w taki: C:\"x y"\"xx"\"x yz"\"xxx"

Ogólnie chodzi o to żeby funkcja wstawiała cudzysłów przed i po nazwie folderu.

Jest to niby proste, ale męczę się z tym 2 dni i ciągle wychodzą mi jakieś przesunięcia.

Oto mój kod:

 

GML
pierwszy = true

c = 2

while(c<string_length(argument0)){

if(string_char_at(argument0,c)== "\"){

if(pierwszy == true){

c+= 1

argument0 = string_insert(chr(34),argument0,c)

pierwszy = false

 

}

else{

argument0 = string_insert(chr(34),argument0,c)

c+= 2

argument0 = string_insert(chr(34),argument0,c)

c+=2

}

}

c+=1

}

return argument0

Odnośnik do komentarza
Udostępnij na innych stronach

Może takie coś:

 

GML
_txt = string_replace_all(string(argument0),"\","\"+chr(34));

_txtLen = string_length(_txt)

 

_cl = false;

_txtTemp = _txt;

for(_i=0;_i<_txtLen;_i+=1)

{

if ((string_char_at(_txt,_i)) == chr(34)) && (!_cl) {

_cl = true;

}

else if ((string_char_at(_txt,_i)) == chr(34)) && (_cl) {

_cl = false;

_txtTemp = string_insert(chr(34),_txt,_i-1);

_txt = _txtTemp;

}

 

}

 

//Dodaje na koncu tekstu znak "

_txtTemp = _txtTemp + chr(34);

 

return _txtTemp;

 

Nie wiem, czy działa pisałem z głowy :D.

Odnośnik do komentarza
Udostępnij na innych stronach

Przetestowałem twój kod i znowu pojawia się błąd z wstawianiem cudzysłowu. Po przekształceniu ścieżka wyglądała tak:

RD C:\"Users"\"rc710"\"game marker"\"minecreator - własna grafika 32 na 3"2\"savegames\"1"

a powinno być tak:

RD C:\"Users"\"rc710"\"game marker"\"minecreator - własna grafika 32 na 32"\"savegames"\"1"

Odnośnik do komentarza
Udostępnij na innych stronach

Zobacz teraz:

 

GML
_txt = string_replace_all(string(argument0),"\","\"+chr(34));

_txtLen = string_length(_txt)

 

_cl = false;

_txtTemp = _txt;

for(_i=1;_i<_txtLen+1;_i+=1)

{

if ((string_char_at(_txt,_i)) == chr(34)) && (!_cl) {

_cl = true;

}

else if ((string_char_at(_txt,_i)) == chr(34)) && (_cl) {

_cl = false;

_txtTemp = string_insert(chr(34),_txt,_i-1);

_txt = _txtTemp;

_i -= 1;

_txtLen += 1;

}

 

}

 

//Dodaje na koncu tekstu znak "

_txtTemp = _txtTemp + chr(34);

 

return _txtTemp;

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...