当出现空格时如何跳过分割?

发布于 2025-01-09 03:52:52 字数 739 浏览 0 评论 0原文

我想使用 ";" 作为分隔符进行拆分,并将结果放入字符串列表中,例如

Input:

sentence;sentence;sentence

应该产生:

[sentence, sentence, sentence]

问题是有些字符串是这样的: “句子;延续;新句子”,为此我希望结果是:[sentence;继续,新句子]

当分号之后(或之前)有空格时,我想跳过拆分。

我想拆分的示例字符串:

String sentence = "Ogłoszenie o zamówieniu;2022/BZP 00065216/01;"Dostawa pojemników na odpady segregowane (900 sztuk o pojemności 240 l – kolor żółty; 30 sztuk o pojemności 1100 l – kolor żółty).";Zakład Wodociągów i Usług Komunalnych EKOWOD Spółka z ograniczoną odpowiedzialnością"

我尝试过:

String[] splitted = sentence.split(";\\S");

但这会切断每个句子的第一个字符。

I want to split using ";" as delimiter and put outcome into the list of strings, for example

Input:

sentence;sentence;sentence

should produce:

[sentence, sentence, sentence]

Problem is some strings are like this:
"sentence; continuation;new sentence", and for such I'd like the outcome to be: [sentence; continuation, new sentence].

I'd like to skip splitting when there is whitespace after (or before) semicolon.

Example string I'd like to split:

String sentence = "Ogłoszenie o zamówieniu;2022/BZP 00065216/01;"Dostawa pojemników na odpady segregowane (900 sztuk o pojemności 240 l – kolor żółty; 30 sztuk o pojemności 1100 l – kolor żółty).";Zakład Wodociągów i Usług Komunalnych EKOWOD Spółka z ograniczoną odpowiedzialnością"

I tried:

String[] splitted = sentence.split(";\\S");

But this cuts off the first character of each sentence.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜嗑 2025-01-16 03:52:52

您可以为此使用正则表达式负前瞻/后瞻。

String testString = "hello;world; test1 ;test2";

String[] splitString = testString.split("(?<! );(?! )"); // Negative lookahead and lookbehind

for (String s : splitString) System.out.println(s);

输出:

hello
world; test1 ;test2

这里,正则表达式开头和结尾附近的字符表示“如果前后没有空格,则仅在分号上分割”

You can use a regex negative lookahead/lookbehind for this.

String testString = "hello;world; test1 ;test2";

String[] splitString = testString.split("(?<! );(?! )"); // Negative lookahead and lookbehind

for (String s : splitString) System.out.println(s);

Output:

hello
world; test1 ;test2

Here, the characters near the start and end of the regex are saying "only split on the semicolon if there are no spaces before or after it"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文