如何拆分Java中的字符串

问题:

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

string1=004
string2=034556

这意味着第一个字符串将包含'-'之前的字符,第二个字符串将包含'-'之后的字符。我也想检查字符串中是否有'-'。如果没有,我会抛出一个异常。我该怎么做?

回答:

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

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

请注意,这需要一个regular expression,所以请记住在必要时逃离special characters

 there是12个字符,具有特殊含义:反斜杠\,插入符号^,美元符号$,周期或点.,垂直条或管道符号| ?,开头大括号{,星号*,加号+,开始圆括号(,右括号)和开放方括号[这些特殊字符通常称为“元字符”。

所以,如果你想分割,例如周期/点.,这意味着正则表达式中的“any character”,使用backslash \来转义个人特殊字符,如split("\\."),或使用character class []表示文字字符,如split("[.]") ,或者使用Pattern#quote()来排除整个字符串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。如果要将分割字符结束在左侧,请通过在模式上前缀?<=组来使用正面lookbehind。

String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts&#91;0&#93;; // 004-
String part2 = parts&#91;1&#93;; // 034556
&#91;/code&#93;
如果您希望将分割字符放在右侧,请通过在模式上前缀<code>?=</code>组来使用正向前瞻。

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

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to split a string in Java

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 35 = 36