如何通过多个点或水平省略号分割字符串

时间:2017-08-06 23:34:07

标签: java split delimiter

尝试按" ..."

分割字符串时遇到问题
    String text ="Here…It is safer.";

我试过了:

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

以及其他许多人,但我还没有找到解决方案。

我知道这个问题非常简单,但我会很高兴如果有人能解释我应该如何使它发挥作用。

3 个答案:

答案 0 :(得分:5)

匹配三个点的正则表达式为\\.{3}\\.\\.\\.[.][.][.]\\Q...\\E

[\\...]\\.都匹配一个点,因为字符类中的重复字符被视为单个字符。

水平省略号是一个不同的字符。它不是正则表达式语言中的元字符,因此它可以直接匹配而不会转义:

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

答案 1 :(得分:0)

多点的正则表达式将是:

(\.)*
如果我记得正确的话,Java会需要这样的东西:

(\\.)*

编辑:刚刚注意到你只要求三点。由于已经有正确的答案,我将在此处留下以防万一。

答案 2 :(得分:0)

一般情况下,可以使用

import { html, css, LitElement } from 'lit-element';
import { classMap } from 'lit/directives/class-map.js';

class SinDrawer extends LitElement {
  static get styles() {
    return css`
      nav {
        display: flex;
        padding: 8px;
        background-color: var(--main-color);
      }
    `;
  }

  static get properties() {
    return {
      _show: { state: true },
    };
  }

  constructor() {
    super();
    this._show = false;
  }

  show() {
    this._show = !this._show;
  }

  render() {
    return html`
      <nav>
        <div class="nav-brand">
          <a href="#/home">
            <img src="./icons/icon_512.png" alt="sr-brand" height="50" title="Sinfor-Resto" />
          </a>
        </div>
        <div class="nav-link ${classMap({ show: this._show })}">
          <a href="#/home" class="nav-anchor">Beranda</a>
          <a href="#/favorite" class="nav-anchor">Favorite</a>
          <a href="#/about" class="nav-anchor">Tentang</a>
        </div>
        <button id="hamb-btn" @click=${this.show}>&#9776;</button>
      </nav>
    `;
  }
}

customElements.define('sin-drawer', SinDrawer);

还要删除封闭的空格:

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

this regex demo

如果您需要确保三个点没有被其他点字符包围,您可以添加环视:

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

详情

  • String[] chunks = text.split("\\s*(?:…|(?<!\\.)\\.{3}(?!\\.))\\s*"); - 零个或多个空格
  • \s* - 非捕获组
  • (?:...) - 省略号
  • - 或
  • | - 如果当前位置的左侧有一个点字符,则匹配失败的负向后视
  • (?<!\.) - 三点
  • \.{3} - 如果当前位置的右侧有一个点字符,则匹配失败的负前瞻。

查看Java demo

(?!\.)