java正则拆分字符串_正则表达式在java中将字符串拆分为一半

没有明显的正则表达式可以做到这一点.也许可以用String.split来做到这一点,但我只是使用这样的子字符串:

String s = "12345678abcdefgh";

final int mid = s.length() / 2;

String[] parts = {

s.substring(0, mid),

s.substring(mid),

};

System.out.println(Arrays.toString(parts));

// "[12345678, abcdefgh]"

上面将分割一个奇数长度的字符串,部分[1]比部分[0]长一个字符.如果你需要反过来,那么只需定义mid =(s.length()1)/ 2;

N部分拆分

您也可以执行以下操作将字符串拆分为N部分:

static String[] splitN(String s, final int N) {

final int base = s.length() / N;

final int remainder = s.length() % N;

String[] parts = new String[N];

for (int i = 0; i < N; i++) {

int length = base + (i < remainder ? 1 : 0);

parts[i] = s.substring(0, length);

s = s.substring(length);

}

return parts;

}

然后你可以这样做:

String s = "123456789";

System.out.println(Arrays.toString(splitN(s, 2)));

// "[12345, 6789]"

System.out.println(Arrays.toString(splitN(s, 3)));

// "[123, 456, 789]"

System.out.println(Arrays.toString(splitN(s, 5)));

// "[12, 34, 56, 78, 9]"

System.out.println(Arrays.toString(splitN(s, 10)));

// "[1, 2, 3, 4, 5, 6, 7, 8, 9, ]"

请注意,这有利于较早的部分来保存额外的字符,并且当部件的数量超过字符数时它也有效.

附录

在上面的代码中:

>?:是条件运算符,也就是三元运算符.

> /执行整数除法. 1/2 == 0.

>%执行整数余数运算. 3%2 == 1.此外,-1%2 == -1.

参考

相关问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值