比方說,我有一個令人困惑的名字,如XX_10231_11_32-33-23_jsv.doc
Java解析文件名
如何從該文件名只提取11個?
我目前使用
filename.split("_", 3)[2];
它提取所有過去11
比方說,我有一個令人困惑的名字,如XX_10231_11_32-33-23_jsv.doc
Java解析文件名
如何從該文件名只提取11個?
我目前使用
filename.split("_", 3)[2];
它提取所有過去11
爲什麼不只是split("_")[2]
代替split("_", 3)[2]
?
String filename="XX_10231_11_32-33-23_jsv.doc";
System.out.println(filename.split("_")[2]);//output 11
無論如何,如果你想 「優化」 split
方法,停止分裂後11
然後使用split("_", 4)
。這將產生四個元素的數組將包含
["XX", "10231", "11", "32-33-23_jsv.doc"]
這裏的問題是3
爲限的選擇。這意味着超過第二個分隔符的所有內容都將位於第3個標記中。使用負數限制,以便返回數組中的令牌數量不受限制。
filename.split("_", -1)
按照split
Javadoc中:
限參數控制在施加圖案 數量,並且因此影響所得陣列的長度。如果 的限制值n大於零,那麼該模式將在 之前應用最多n-1次,該陣列的長度將不會大於n,並且該陣列的最後一個條目將包含超出最後匹配的 定界符的所有輸入。如果n是非正數那麼該模式將盡可能多地應用爲 ,並且該數組可以具有任何長度。如果n爲零 那麼該模式將盡可能多地應用,數組 可以具有任何長度,並且尾隨的空字符串將被丟棄。
(重點煤礦)
或者只是調用'split()'而不使用限制參數:'split(「_」)' – iamnotmaynard
@iamnotmaynard是的,這樣會更簡單。但我也想指出'limit'參數的作用。 – rgettman
這很好,因爲它解釋了OP的結果。 – iamnotmaynard
正則表達式..'*?_ *?_(。*?)_ *' – vidit
@vidit答案是'分裂()'。 – CPerkins
使用split(String正則表達式)方法,沒有限制。例如filename.split( 「_」)[2]; – nikkatsa