为什么这段代码的第二行抛出ArrayIndexOutOfBoundsException
?
String filename = "D:/some folder/001.docx";
String extensionRemoved = filename.split(".")[0];
尽管这可行:
String driveLetter = filename.split("/")[0];
我使用Java 7。
如果要分割成文字的点,则需要转义该点:
String extensionRemoved = filename.split("\\.")[0];
否则,你将在regex上拆分.,这意味着“任何字符”。
请注意在正则表达式中创建单个反斜杠所需的双反斜杠。
ArrayIndexOutOfBoundsException
因为输入字符串只是一个点,所以得到一个,即”.”,这是一个边沿情况,当在点上分割时会产生一个空数组;split(regex)
从结果中删除所有尾随的空白,但是由于在点上分割点仅留下两个空白,因此删除尾随的空白后,你将得到一个空数组。
为避免出现ArrayIndexOutOfBoundsException
这种情况,请使用的重载版本split(regex, limit)
,该版本的第二个参数是所得数组的大小限制。当limit
为负数时,禁用从结果数组中删除尾随空白的行为:
".".split("\\.", -1) // returns an array of two blanks, ie ["", ""]
即,当filename
只是一个点时"."
,调用filename.split("\\.", -1)[0]
将返回一个空白,但是调用filename.split("\\.")[0]
将引发一个ArrayIndexOutOfBoundsException
。
问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生
问题内容: 输入示例: 输出示例: 字母和数字部分的长度不固定。 我知道如何将split()与regex一起使用,但是尽管我检查了Java API,但找不到任何可以帮助我解决此问题的东西。 有没有办法做到这一点?或者我需要使用另一种方法来拆分这些字符串。 任何帮助,将不胜感激。 问题答案: 试试这个正则表达式: 这是一个正在运行的示例:http : //ideone.com/c02rmM 正则表达
问题内容: 使用功能split拆分此String。这是我的代码: 当我尝试这样做时,spli只包含一个字符串。似乎Java在拆分时看不到“ ^”。有人知道如何用字母“ ^”分割此字符串吗? 编辑 解决了:P 问题答案: 这是因为需要一个正则表达式,而不是文字字符串。您必须转义,因为它在regex(字符串开头的锚点)中具有不同的含义。因此,拆分实际上是在第一个字符之前完成的,从而使您完整地返回了完整
问题内容: 我有一个值为的字符串。我想将字符串分成两个字符串,值为的字符串和的值为字符串。 正确的功能/语法是什么? 我已经看过了,但是找不到将数据返回到两个单独的字符串中的实际语法。 问题答案: 该功能适用于:
问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数
问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是: