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

前端之家收集整理的这篇文章主要介绍了正则表达式在java中将字符串拆分为一半前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们需要帮助如何为string.split编写正则表达式,这样我们就可以将字符串分成两半.

谢谢.

解决方法

没有明显的正则表达式可以做到这一点.也许可以用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.

参考

> JLS 15.25 Conditional Operator ?:
> JLS 15.17.2 Division Operator /
> JLS 15.17.3 Remainder Operator %

相关问题

> How does the ternary operator work?
> Why does (360 / 24) / 60 = 0 … in Java

猜你在找的正则表达式相关文章