18. august 2005 - 14:43
Der er
11 kommentarer og 1 løsning
Sortering af streng
Jeg skal have sorteret en streng som kan indeholde tal og bogstaver. tallene skal have første priotet hvorefter bogstaverne skla komme i alfabetisk rækkefølge. Hvordan gøres dette?
Annonceindlæg fra Computerworld
18. august 2005 - 14:51
#1
kan dette gøres ved hjælp af en af javas egne sorteringsmetoder?
18. august 2005 - 14:53
#2
Det kan det sikkert godt. Du kan vel storte et chararray som du har lavet udfra din streng?
18. august 2005 - 14:57
#3
import java.util.Arrays; public class CharSort { public static void main(String[] args) { String s = "a2c1b"; char[] ca = s.toCharArray(); Arrays.sort(ca); String s2 = new String(ca); System.out.println(s2); } } udskriver ihvertfald 12abc
18. august 2005 - 15:57
#4
18. august 2005 - 15:59
#5
Men jeg skal dog bruge feks 12abc abc 1fck 123 det skal se således ud 123 1fck 12abc abc
18. august 2005 - 16:06
#6
er det en normal sortering (som i første stykke kode i linket) ? bortset fra at jeg ike forstår hvordan 123 komem rfør 1fck men 1fck før 12abc
18. august 2005 - 16:42
#7
hehe nææ blev også selv i tvivl da jeg havde skrevet det:-) I linket er det den med comparator det er lige den jeg skal bruge
19. august 2005 - 09:06
#8
Hej Arne Forstår ikke lige den der løkke? udfører den kun den ene linie -> ix1++? hvorfor det ? class CompEx implements Comparator { public int compare(Object o1, Object o2) { String s1 = (String)o1; int ix1 = 0; while(ix1 < s1.length() && Character.isDigit(s1.charAt(ix1))) ix1++; int i1 = Integer.parseInt(s1.substring(0, ix1)); String sufs1 = s1.substring(ix1); String s2 = (String)o2; int ix2 = 0; while(ix2 < s2.length() &&Character.isDigit(s1.charAt(ix2))) ix2++; int i2 = Integer.parseInt(s2.substring(0, ix2)); String sufs2 = s1.substring(ix2); if(i1 == i2) { return sufs1.compareTo(sufs2); } else { return (i1 - i2); } } public boolean equals(Object obj) { return super.equals(obj); } }
19. august 2005 - 09:36
#9
jeg får ix1 til at pege på det første tegn som ikke er et tal
19. august 2005 - 10:12
#10
aaahh ja ok nu jeg med husk at lave svar
19. august 2005 - 10:29
#11
hov, der skulle vist lige ændres lidt i while nummer 2... der er det s2.charAt og ikke s1 og også s2.substring nedenunder
19. august 2005 - 12:49
#12
jep og svar
Kurser inden for grundlæggende programmering