假设我的名字令人困惑,例如XX_10231_11_32-33-23_jsv.doc
如何从该文件名中仅提取 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
极限的选择。这意味着超过第二个找到的分隔符的所有内容都将在第三个标记中。使用负数限制,以便返回数组中的标记数没有限制。
filename.split("_", -1)
根据split
Javadocs:
limit 参数控制应用模式的次数,因此会影响结果数组的长度。如果限制 n 大于零,则该模式将最多应用 n - 1 次,数组的长度将不大于 n,并且数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入。如果 n为非正数,则该模式将尽可能多地应用,并且数组可以具有任意长度。如果 n 为零,则该模式将被应用尽可能多的次数,数组可以有任意长度,并且尾随的空字符串将被丢弃。
(强调我的)