• 7 odgovora
  • 5.865 pregleda
RAZBIJANJE STRING-A 28.08.2002. u 22:42 · pre 294 meseci #1
Ovako majstori imam problem pa mi je potrebna pomoc.
Dakle imam jedan string:

'a+b-c+d-e'

i treba ga razbiti izmedju znakova '+' i '-' ali tako da se svaki element izdvoji sa znakom koji mu prethodi uz to naravno prvi da se izdvoji bez ikakvog znaka. Da budem malo jasniji rezultat problema trebalo bi da bude u obliku matrice:

A[0]='a'
A[1]='+b'
A[2]='-c'
A[3]='+d'
A[4]='-e'

Dakle ako neko zna neka napise resenje.
Unaprijed hvala!!!
Potpis
www.reosonline.com
www.net-code.net
Re: RAZBIJANJE STRING-A 29.08.2002. u 11:12 · pre 294 meseci #2
Code:

<?php
$str = "a+b-c+d-e";
$A[] = substr($str,0,1); 

for($i = 1; $i < strlen($str); $i += 2) {
        $A[] = substr($str,$i,2);     
}
?>
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: RAZBIJANJE STRING-A 29.08.2002. u 11:14 · pre 294 meseci #3
probaj preko regexp-a, npr:
Code:

a = preg_match_all("/([\+-]?[a-z])/");

nisam bas najsigruniji sto se tice sintakse, ali regexp je ok. proveri po dokumentaciji.
Potpis
= come get some =
Re: RAZBIJANJE STRING-A 29.08.2002. u 13:59 · pre 294 meseci #4
Oba resenja rade ali postoji drugi problem(zato sto nisam dobro postavio zadatak).
Dakle clanovi stringa mogu biti proizvoljne duzine tj.:

'aaa+bb+cccc-e-yyy'

Pa u tom slucaju data resenja ne odgovaraju.
Dakle, imate li resenje za ovo???
Hvala
Potpis
www.reosonline.com
www.net-code.net
Re: RAZBIJANJE STRING-A 29.08.2002. u 18:32 · pre 294 meseci #6
Code:

$str = 'aaa+bb+cccc-e-yyy';

$str = ereg_replace('-', '#-', $str);
$str = ereg_replace('+', '#+', $str);

// sad string izgleda ovako 
// $str= 'aaa#+bb#+cccc#-e#-yyy';

$razdvojeni = explode('#', $str);


...mislim da ce ti pomoci.
Re: RAZBIJANJE STRING-A 29.08.2002. u 18:34 · pre 294 meseci #7
Evo onda koda:

Code:

$string = 'aaa+bb+cccc-e-yyy';
if (preg_match_all('/([\+-]?[a-z]+)/', $string, $rezultat))
{
    while (list($n,$rez) = each($rezultat[0]))
        print "$n: $rez\n";
}


Ovo ti daje sledeci rezultat:

Code:

0: aaa
1: +bb
2: +cccc
3: -e
4: -yyy


Ukoliko ti ne treba + u matrici, mozes u drugom redu gornjeg koda zameniti '[\+-]' sa '[\-]'.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme