prefix/dir1/dir2/dir3/dir4/..
Hoe de dir1, dir2
waarden uit de bovenstaande string in Java te ontleden?
Het voorvoegsel hier kan zijn:
/usr/local/apache2/resumes
Antwoord 1, autoriteit 100%
Als u de String
wilt splitsen bij het teken /
, moet de String.split
methode zal werken:
Bijvoorbeeld:
String s = "prefix/dir1/dir2/dir3/dir4";
String[] tokens = s.split("/");
for (String t : tokens)
System.out.println(t);
Uitvoer
prefix
dir1
dir2
dir3
dir4
Bewerken
Geval met een /
in het voorvoegsel, en we weten wat het voorvoegsel is:
String s = "slash/prefix/dir1/dir2/dir3/dir4";
String prefix = "slash/prefix/";
String noPrefixStr = s.substring(s.indexOf(prefix) + prefix.length());
String[] tokens = noPrefixStr.split("/");
for (String t : tokens)
System.out.println(t);
De substring zonder het voorvoegsel "slash/prefix/"
is gemaakt door de substring
methode. Die String
wordt dan door split
gehaald.
Uitvoer:
dir1
dir2
dir3
dir4
Opnieuw bewerken
Als deze String
daadwerkelijk te maken heeft met bestandspaden, gebruik dan de File
klasse heeft waarschijnlijk meer de voorkeur dan het gebruik van stringmanipulaties. Klassen zoals File
die al rekening houden met alle fijne kneepjes van het omgaan met bestandspaden, zullen robuuster zijn.
Antwoord 2, autoriteit 3%
Waarom zou u in dit geval new File("prefix/dir1/dir2/dir3/dir4")
niet gebruiken en vanaf daar verder gaan?
Antwoord 3, autoriteit 3%
String str = "/usr/local/apache/resumes/dir1/dir2"; String prefix = "/usr/local/apache/resumes/"; if(str.startsWith(prefix) ) { str = str.substring(0, prefix.lengte); Stringdelen[] = str.split("/"); // dir1=onderdelen[0]; // dir2=onderdelen [1]; } anders { // Het begint niet met jouw voorvoegsel }
Antwoord 4, autoriteit 3%
...
String str = "bla!/bla/bla/"
String parts[] = str.split("/");
//To get fist "bla!"
String dir1 = parts[0];
Antwoord 5, autoriteit 2%
String result;
String str = "/usr/local/apache2/resumes/dir1/dir2/dir3/dir4";
String regex ="(dir)+[\\d]";
Matcher matcher = Pattern.compile( regex ).matcher( str);
while (matcher.find( ))
{
result = matcher.group();
System.out.println(result);
}
uitvoer–
dir1
dir2
dir3
dir4
Antwoord 6, autoriteit 2%
Het gebruik van de String.split
methode zal zeker werken zoals verteld in andere antwoorden hier.
Ook de klasse StringTokenizer
kan worden gebruikt om de tekenreeks te ontleden met behulp van /
als scheidingsteken.
import java.util.StringTokenizer;
public class Test
{
public static void main(String []args)
{
String s = "prefix/dir1/dir2/dir3/dir4/..";
StringTokenizer tokenizer = new StringTokenizer(s, "/");
String dir1 = tokenizer.nextToken();
String dir2 = tokenizer.nextToken();
System.out.println("Dir 1 : "+dir1);
System.out.println("Dir 2 : " + dir2);
}
}
Geeft de uitvoer als:
Dir 1 : prefix
Dir 2 : dir1
Hier kun je meer vinden over StringTokenizer.
Antwoord 7
Als het een bestand is, kunt u de onderdelen verkrijgen door een instantie van bestand te maken en vervolgens om de segmenten te vragen.
Dit is goed omdat het werkt ongeacht de richting van de schuine strepen; het is platformonafhankelijk (behalve de “stationsletters” in Windows…)
Antwoord 8
public class Test {
public static void main(String args[]) {
String s = "pre/fix/dir1/dir2/dir3/dir4/..";
String prefix = "pre/fix";
String[] tokens = s.substring(prefix.length()).split("/");
for (int i=0; i<tokens.length; i++) {
System.out.println(tokens[i]);
}
}
}
Antwoord 9
String.split(String regex) is handig, maar als je de afhandeling van reguliere expressies niet nodig hebt, gebruik dan het voorbeeld substring(..), java.util.StringTokenizer of gebruik Apache commons lang 1. Het prestatieverschil wanneer geen reguliere expressies worden gebruikt, kan een snelheidswinst van 1 tot 2 ordes van grootte zijn.
Antwoord 10
String s = "prefix/dir1/dir2/dir3/dir4"
String parts[] = s.split("/");
System.out.println(s[0]); // "prefix"
System.out.println(s[1]); // "dir1"
...