簡體   English   中英

如何通過三個點或水平省略號分割字符串

[英]How to split a string by triple dots or horizontal ellipsis

嘗試通過“...”分割字符串時遇到問題

    String text ="Here…It is safer.";

我試過:

String [] output = text.split("[\\...]");
String [] output = text.split("\\.");

和許多其他人,但我還沒有找到解決方案。

我知道這個問題很簡單,但如果有人能解釋我應該如何使它工作,我會很高興。

匹配三個點的正則表達式是\\\\.{3}\\\\.\\\\.\\\\. [.][.][.]\\\\Q...\\\\E

[\\\\...]\\\\. 匹配單個點,因為字符類中的重復字符被視為單個字符。

水平省略號是一個不同的字符。 它不是正則表達式語言中的元字符,因此可以直接匹配,無需轉義:

String [] output = text.split("…");

多個點的正則表達式將是:

(\.)*

如果我沒記錯的話,Java 會需要這樣的東西:

(\\.)*

編輯:剛剛注意到你只要求三點。 由於已經有了正確的答案,我將把它留在這里以防萬一。

一般來說,你可以使用

String[] chunks = text.split("…|\\.{3}");

還要刪除封閉的空格:

String[] chunks = text.split("\\s*(?:…|\\.{3})\\s*");

請參閱此正則表達式演示

如果您需要確保三個點沒有被其他點字符包圍,您可以添加環視:

String[] chunks = text.split("\\s*(?:…|(?<!\\.)\\.{3}(?!\\.))\\s*");

詳情

  • \\s* - 零個或多個空格
  • (?:...) - 一個非捕獲組
  • - 省略號
  • | - 或
  • (?<!\\.) - 如果當前位置左側有一個點字符,則匹配失敗的負向后視
  • \\.{3} - 三點
  • (?!\\.) - 如果當前位置的右側有一個點字符,則匹配失敗的負前瞻。

查看Java 演示

String text = "Here…It is safer... The end.";
String[] chunks = text.split("\\s*(?:…|\\.{3})\\s*");
System.out.println(Arrays.toString(chunks));
// => [Here, It is safer, The end.]

暫無
暫無

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

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