小编典典

如何在Java中拆分字符串

javascript

我有一个字符串,"004-034556"我想分成两个字符串:

string1="004";
string2="034556";

这意味着第一个字符串将包含之前的字符'-',第二个字符串将包含之后的字符'-'。我还想检查字符串是否包含'-'在其中。如果没有,我会抛出一个异常。我怎样才能做到这一点?


阅读 394

收藏
2022-02-15

共1个答案

小编典典

只需使用适当的方法:String#split().

String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556

请注意,这需要一个正则表达式,因此请记住在必要时转义特殊字符。

12 个具有特殊含义的字符:反斜杠\、插入符号^、美元符号$、句点或点.、竖线或竖线符号|、问号?、星号或星号*、加号+、左括号(、右括号), 和左方括号 ,[左大括号{, 这些特殊字符通常被称为“元字符”。

因此,如果您想在正则表达式.中表示“任何字符”的句点/点进行拆分,请使用反斜杠\来转义单个特殊字符,如 so split("\\."),或使用字符类[\]表示文字字符,如 so split("[.]"),或使用Pattern#quote()to像这样转义整个字符串split(Pattern.quote("."))

String[] parts = string.split(Pattern.quote(".")); // Split on period.

要预先测试字符串是否包含某些字符,只需使用String#contains().

if (string.contains("-")) {
    // Split it.
} else {
    throw new IllegalArgumentException("String " + string + " does not contain -");
}

请注意,这不需要正则表达式。为此,请String#matches()改用。

如果您想在结果部分中保留拆分字符,请使用positive lookaround。如果您希望拆分字符出现在左侧,请通过?<=在模式上添加前缀 group 来使用正向lookbehind。

String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556

如果您希望拆分字符出现在右侧,请通过?=在模式上添加前缀组来使用正向前瞻。

String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556

如果您想限制结果部分的数量,那么您可以提供所需的数量作为split()方法的第二个参数。

String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42
2022-02-15