在java中将字符串一分为二的正则表达式

在java中将字符串一分为二的正则表达式,java,regex,Java,Regex,我们需要帮助如何为string.split编写正则表达式,以便将字符串一分为二 谢谢。没有明显的正则表达式模式可以做到这一点。使用String.split可以做到这一点,但我只会像这样使用子字符串: String s = "12345678abcdefgh"; final int mid = s.length() / 2; String[] parts = { s.substring(0, mid), s.substring(mid),

我们需要帮助如何为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部分
split
您还可以执行以下操作将字符串拆分为N个部分:

请注意,这有利于较早的部分保留额外的字符,并且在部分数量大于字符数量时也可以使用


附录 在上述代码中:

  • ?:
    是条件运算符,也称为三值运算符
  • /
    执行整数除法<代码>1/2==0
  • %
    执行整数余数运算<代码>3%2==1
  • 。另外,
    -1%2==-1
    工具书类
    相关问题

    你真的不需要正则表达式。只需使用
    substring()


    这对正则表达式来说不是问题。你可以计算字符串的长度,只要按长度/2分开。请用一个例子把你的问题说清楚。@Bart:不错,我应该想到的。虽然我觉得我没有想到这件事很好。我喜欢玩弄正则表达式,但我不想让它成为我的第一本能。@Polygene润滑油,老实说,我原以为你会在你最初的帖子中用这样的话作为开玩笑的解决方案:)+1,简单明了的回答。如果需要更复杂的解决方案,请让OP回答并澄清问题。+1用于通过包括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, ]"
    
    int midpoint = str.length() / 2;
    String firstHalf = str.substring(0, midpoint);
    String secondHalf = str.substring(midpoint);