gpt4 book ai didi

java - 删除字符串中的某些字符,Java

转载 作者:行者123 更新时间:2023-12-01 06:35:49 27 4
gpt4 key购买 nike

我的问题是我想在字符串的某些部分删除字符,但我不知道如何限制删除。

示例:

A computer is a general purpose device that can be\n
programmed to carry out a finite set of\n
millions to billions of times more capable.\n
\n
In this era mechanical analog computers were used\n
for military applications.\n
1.1 Limited-function early computers\n
1.2 First general-purpose computers\n
1.3 Stored-program architecture\n
1.4 Semiconductors and\n

这里的示例是我的字符串的内容,我想要发生的是删除上面第 1 行和第 2 行的 \n 但不删除 \n > 从第 5 行开始。 如何删除 \n 而不删除其他 \n。我的目标是使字符串成为一个段落,行后没有 \n 。就像示例一样,前 3 行可以是一个段落,接下来的行采用项目符号形式(示例)。我的意思是我不想删除项目符号字符中的 \n

字符串的真实内容是动态的。

我已经尝试过使用 String.replaceAll("\n", "") ,显然这是行不通的,它会删除我想到的所有 \n使用 Regex 来确定什么是字母数字,但它会删除 \n

之后的一些字母

最佳答案

尝试使用这个正则表达式:-

str = str.replaceAll("(.+)(?<!\\.)\n(?!\\d)", "$1 ");
System.out.println(str);

这将取代您的 \n如果是not preceded通过dot - termination of a paragraph ,它是 not followed通过digit ,因为它后面跟着一个项目符号点。 (例如,第一个要点中的 \n 后面跟着 1.2 。因此,它不会被替换。)。

  • (.+)在开始时,确保您不会替换 blank line .

这适用于您显示的字符串。

说明:-

  • (.+) -> 一个捕获组,捕获任何东西,至少发生一次。

  • (?<!\\.) -> 这叫做negative-look-behind 。它匹配 string紧随其后,仅当该字符串前面没有 dot(.)negative-look-behind中给出模式。
    例如:-您不需要替换 \n行后:- millions to billions of times more capable.\n .

  • (?!\\d) -> 这叫做negative -look-ahead 。仅当该字符串后面没有 digit (\\d) 时,它才匹配其后面的字符串。 negative-look-ahead中给出图案。
    例如:- 在您的项目符号中,computers\n接下来是 1.2 。哪里1是一个数字。所以,您不想替换 \n .

  • 现在,$1$2表示模式匹配中捕获的组。因为你只想替换 "\n" 。因此,我们按原样保留剩余的模式匹配,同时替换 "\n"space .

所以,$11st group 的表示-(.+)

注意,look-aheadlook-behind正则表达式是 non-capturing组。

有关更多详细信息,请点击以下链接:-

关于java - 删除字符串中的某些字符,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13229157/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com