簡體   English   中英

正則表達式在java中將字符串拆分為一半

[英]regex to split a string in half in java

我們需要幫助如何為string.split編寫正則表達式,這樣我們就可以將字符串分成兩半。

謝謝。

沒有明顯的正則表達式可以做到這一點。 也許可以用String.split來做到這一點,但我只是使用這樣的substring

    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]"

上面將分割一個奇數長度的Stringpart[1]part[0]長一個字符。 如果你需要mid = (s.length() + 1) / 2; ,那么只需定義mid = (s.length() + 1) / 2;


N部分split

您也可以執行以下操作將字符串拆分為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

參考

相關問題

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

int midpoint = str.length() / 2;
String firstHalf = str.substring(0, midpoint);
String secondHalf = str.substring(midpoint);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM