(翻译)How to split a string in Java

博客围绕Java中拆分字符串展开,提出将一个字符串拆分成两个,且要检查字符串是否包含特定字符,不包含则抛异常的问题。介绍了使用String#split()方法,需注意正则表达式及特殊字符转义,还提及预先测试、保留拆分字符及限制分割数量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://stackoverflow.com/questions/3481828/how-to-split-a-string-in-java
【问题】
在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

注意这里需要放入一个正则表达式,如果需要的话,请记住使用转义字符

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

因此,如果你想使用例如 .拆分字符串。这在正则表达式中表示任意字符,你可以使用反斜杠\\来转义单个特殊字符,如split("\\."),或者使用字符类[]来表示文本字符,如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()

如果您希望在结果部分保留拆分字符,那么可以使用正向环顾。如果您想让拆分字符出现在左手端,请通过正向后行 ?<=分组模式。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值