[英]How to parse this string in Java?
前綴/ DIR1 / DIR2 / DIR3 / dir4 / ..
如何在Java中解析上述字符串中的dir1, dir2
值?
這里的前綴可以是:
在/ usr /本地/的Apache2 /簡歷
如果要將String
拆分為/
字符, String.split
方法將起作用:
例如:
String s = "prefix/dir1/dir2/dir3/dir4";
String[] tokens = s.split("/");
for (String t : tokens)
System.out.println(t);
產量
prefix
dir1
dir2
dir3
dir4
編輯
前綴為/
的情況,我們知道前綴是什么:
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);
沒有前綴"slash/prefix/"
的substring
由substring
方法生成。 然后,該String
將通過split
運行。
輸出:
dir1
dir2
dir3
dir4
再次編輯
如果此String
實際上處理文件路徑,則使用File
類可能比使用字符串操作更可取。 類似File
類已經考慮了處理文件路徑的所有復雜性,這些類將更加健壯。
在這種情況下,為什么不使用new File("prefix/dir1/dir2/dir3/dir4")
並從那里開始?
...
String str = "bla!/bla/bla/"
String parts[] = str.split("/");
//To get fist "bla!"
String dir1 = parts[0];
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);
}
output-- dir1 dir2 dir3 dir4
使用String.split
方法肯定會像在其他答案中所說的那樣工作。
此外, StringTokenizer
類可用於使用/
作為分隔符來解析String。
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);
}
}
輸出為:
Dir 1 : prefix
Dir 2 : dir1
在這里您可以找到有關StringTokenizer的更多信息。
String str = "/usr/local/apache/resumes/dir1/dir2"; String prefix = "/usr/local/apache/resumes/"; if( str.startsWith(prefix) ) { str = str.substring(0, prefix.length); String parts[] = str.split("/"); // dir1=parts[0]; // dir2=parts[1]; } else { // It doesn't start with your prefix }
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]);
}
}
}
如果它是一個文件,您可以通過創建一個instanceof文件然后詢問它的段來獲取這些部分。
這很好,因為無論斜線的方向如何,它都能工作; 它是獨立於平台的(除了Windows中的“驅動器號”...)
String.split(String regex)很方便,但如果你不需要正則表達式處理,那么請使用substring(..)示例,java.util.StringTokenizer或使用Apache commons lang 1 。 不使用正則表達式時的性能差異可以是速度增加1到2個數量級。
String s = "prefix/dir1/dir2/dir3/dir4"
String parts[] = s.split("/");
System.out.println(s[0]); // "prefix"
System.out.println(s[1]); // "dir1"
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.