尝试按" ..."
分割字符串时遇到问题 String text ="Here…It is safer.";
我试过了:
String [] output = text.split("[\\...]");
String [] output = text.split("\\.");
以及其他许多人,但我还没有找到解决方案。
我知道这个问题非常简单,但我会很高兴如果有人能解释我应该如何使它发挥作用。
答案 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}>☰</button>
</nav>
`;
}
}
customElements.define('sin-drawer', SinDrawer);
还要删除封闭的空格:
String[] chunks = text.split("…|\\.{3}");
如果您需要确保三个点没有被其他点字符包围,您可以添加环视:
String[] chunks = text.split("\\s*(?:…|\\.{3})\\s*");
详情:
String[] chunks = text.split("\\s*(?:…|(?<!\\.)\\.{3}(?!\\.))\\s*");
- 零个或多个空格\s*
- 非捕获组(?:...)
- 省略号…
- 或|
- 如果当前位置的左侧有一个点字符,则匹配失败的负向后视(?<!\.)
- 三点\.{3}
- 如果当前位置的右侧有一个点字符,则匹配失败的负前瞻。查看Java demo:
(?!\.)