2013-10-16 106 views
1

幫助,將不勝感激解析某一小節中,我有一個字符串,如: APP_RUNTIME_ERB3242322_1_P3A97.tar.gzJava中使用字符串分割

,我想分析它,並得到如下: P3A97

字符串會在時間上發生變化,但基本上我需要在.tar.gz部分之前的最後五個字母數字字母,每當我得到這些字符串數據時都是如此。

我可以使用java字符串拆分方法,但我不知道我可以使用什麼正則表達式來獲取最後5個字符。

+0

爲什麼不'_'或'.'分裂。或者你可以分裂兩次。 –

+1

如果它總是「.tar.gz」之前的最後五個字符,那麼你可以使用字符串方法的長度爲-12的字符串(或者其他東西,我沒有計算)來得到你想要的。 – jpw

回答

5

你可以使用lastIndexOf

str.substring(str.lastIndexOf("_") + 1, str.lastIndexOf(".tar.gz")) 
+0

'str.indexOf(「。」)'? –

+0

那麼誰知道什麼點可以出現在名稱本身 – Reimeus

+0

然後'str.indexOf(「。tar.gz」)'?大聲笑。只是挑剔;) –

2

您可以最初基於「_」進行拆分,然後獲取它提供給您的最後一個記號。然後你可以分裂「。」並採取它給你的第一個標記。這當然取決於格式是否總是具有相同數量的每個分割的令牌。

證明:

APP_RUNTIME_ERB3242322_1_P3A97.tar.gzAPP

RUNTIME

ERB3242322

1

P3A97.tar.gz

,然後分裂成P3A97.tar.gzP3A97targz

1
... 
String str = "APP_RUNTIME_ERB3242322_1_P3A97.tar.gz"; 
String lastChars = str.substring(str.length() - 12).replace(".tar.gz", ""); 

System.out.print(lastChars); 

P3A97 
1

我需要的部分名爲.tar.gz前的最後五個字母數字字母每當我得到飼料這個字符串數據。

我可以使用java字符串分割方法,但我不知道我的正則表達式可以用來獲取最後5個字符

你不需要在這裏正則表達式。除了你所提到的東西,如果.tar.gz可以被認爲是在字符串的結尾,那麼你正在尋找一個substring

starting at (length of the string) - length(.tar.gz) - 5 
ending at above index + 5