/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Er der en lettere måde (strings)?
Fra : t_p


Dato : 28-06-02 17:10

Jeg har en string med flg. format:

ok|name,test1,test2,test3

Hvor | og alt efter kan blive gentaget en ukendt antal gange, f.eks.:

ok|Peter,aaa,bbb,ccc|Hans,aaa,bbb,ccc|Lotte,aaa,bbb,ccc|Trine,aaa,bbb,ccc

Den vil jeg gerne have delt op, så jeg har en løkke der løber "| |" igennem
så jeg har mellemresultaterne. F.eks. efter første gennemløb har jeg:

Peter
aaa
bbb
ccc

Efter andet gennemløb har jeg

Hans
aaa
bbb
ccc

Osv. Det har jeg så lavet herunder (og det virker fint), men da jeg i mit
program skal arb. meget med strings vil jeg gerne have den "bedste"
kode. Med bedste kode mener jeg mest overskuelige, jeg mener selv
at koden er pæn og overskuelig, meeeen nu er det jo mig selv der har
lavet det, så jeg kunne godt tænke mig at høre hvad andre mener :)

public void addStrings(String a)
{
boolean more = true;
int Place;
String Name;
String test1;
String test2;
String test3;
a = a.substring(3, a.length());
while (more)
{
for (int i = 1; i <= 4;i++)
{
switch (i)
{
case 1:
Place = a.indexOf(",");
Name = a.substring(0, Place);
a = a.substring(Place+1, a.length());
break;
case 2:
Place = a.indexOf(",");
test1 = a.substring(0, Place);
a = a.substring(Place+1, a.length());
break;
case 3:
Place = a.indexOf(",");
test2 = a.substring(0, Place);
a = a.substring(Place+1, a.length());
break;
case 4:
Place = a.indexOf("|");
if (Place == -1)
{
test3 = a;
more = false;
}
else
{
Status = a.substring(0, Place);
test3 = a.substring(Place+1, a.length());
}
break;
};//end switch (i)
};//end for (int i = 1; i <= 4;i++)
};//end while (more)
};//end addStrings

Ps. Det at jeg skal bruge delresultaterne er endnu ikke lagt ind.



 
 
N/A (28-06-2002)
Kommentar
Fra : N/A


Dato : 28-06-02 21:29



t_p (28-06-2002)
Kommentar
Fra : t_p


Dato : 28-06-02 21:29

"Lasse Westh-Nielsen" <lasseNOSPAM@daimi.NOSPAM.au.dk> wrote in message
news:Uv2T8.13$cn5.54940725@news.orangenet.dk...
> Jeg tror StringTokenizer er din ven:
>
> http://java.sun.com/j2se/1.4/docs/api/java/util/StringTokenizer.html
>
> Først tokenizer du på '|', det giver dig strengene "Peter,aaa,bbb,ccc",
> "Hans,aaa,bbb,ccc", ...
>
> Så tokenizer du hver af de strenge på ',', det giver dig "Peter", "aaa",
> "bbb" og "ccc" og forfra...
>
> Det kommer til at fylde meget mindre, og "se pænere ud" tror jeg

Lyder smart den kigger jeg på :) Tak.

--
T



Arve Lillehagen (28-06-2002)
Kommentar
Fra : Arve Lillehagen


Dato : 28-06-02 21:49

t_p wrote:
> Jeg har en string med flg. format:
>
> ok|name,test1,test2,test3
>
> Hvor | og alt efter kan blive gentaget en ukendt antal gange, f.eks.:
>
> ok|Peter,aaa,bbb,ccc|Hans,aaa,bbb,ccc|Lotte,aaa,bbb,ccc|Trine,aaa,bbb,ccc
>
> Den vil jeg gerne have delt op, så jeg har en løkke der løber "| |" igennem
> så jeg har mellemresultaterne. F.eks. efter første gennemløb har jeg:
>
> Peter
> aaa
> bbb
> ccc
>
> Efter andet gennemløb har jeg
>
> Hans
> aaa
> bbb
> ccc
>
> Osv. Det har jeg så lavet herunder (og det virker fint), men da jeg i mit
> program skal arb. meget med strings vil jeg gerne have den "bedste"
> kode. Med bedste kode mener jeg mest overskuelige, jeg mener selv
> at koden er pæn og overskuelig, meeeen nu er det jo mig selv der har
> lavet det, så jeg kunne godt tænke mig at høre hvad andre mener :)
>
> public void addStrings(String a)
> {
> boolean more = true;
> int Place;
> String Name;
> String test1;
> String test2;
> String test3;
> a = a.substring(3, a.length());
> while (more)
> {
> for (int i = 1; i <= 4;i++)
> {
> switch (i)
> {
> case 1:
> Place = a.indexOf(",");
> Name = a.substring(0, Place);
> a = a.substring(Place+1, a.length());
> break;
> case 2:
> Place = a.indexOf(",");
> test1 = a.substring(0, Place);
> a = a.substring(Place+1, a.length());
> break;
> case 3:
> Place = a.indexOf(",");
> test2 = a.substring(0, Place);
> a = a.substring(Place+1, a.length());
> break;
> case 4:
> Place = a.indexOf("|");
> if (Place == -1)
> {
> test3 = a;
> more = false;
> }
> else
> {
> Status = a.substring(0, Place);
> test3 = a.substring(Place+1, a.length());
> }
> break;
> };//end switch (i)
> };//end for (int i = 1; i <= 4;i++)
> };//end while (more)
> };//end addStrings
>
> Ps. Det at jeg skal bruge delresultaterne er endnu ikke lagt ind.
>
>

java.util.StringTokenizer vil gi en mer kompakt kode.
Du kan også sette delimiter i konstruktør på "|" og "," og la det hele
gå i to løkker inne i hverandre.

Arve


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste