当前位置: 首页 > 面试题库 >

用“。”分割字符串 (点),同时处理缩写

班浩皛
2023-03-14
问题内容

我发现这很难解释,因此我将以一些我想实现的目标之前/之后的例子作为开始。

输入示例

你好,世界

这是一个测验

SWATTeam

扑打

扑打

2001.太空漫游

想要的输出:

你好,世界

这是一个测验

特警队

扑打

扑打

2001太空漫游

从本质上讲,我想创建一种能够按点将字符串分割的东西,但同时要处理缩写。

我对缩写的定义是至少具有两个字符(与外壳无关)和两个点,即“ AB”或“ ab”。它 不应该 与数字一起使用,即“ 1.a.”。

我已经使用正则表达式尝试了各种方法,但这并不是我的强项,因此我希望这里的人有我可以使用的任何想法或指针。


问题答案:

如何用正则表达式删除需要消失的点,然后用空格替换其余的点呢?正则表达式可以看起来像(?<=(^|[.])[\\S&&\\D])[.](?=[\\S&&\\D]([.]|$))

String[] data = { 
        "Hello.World", 
        "This.Is.A.Test", 
        "The.S.W.A.T.Team",
        "S.w.a.T.", 
        "S.w.a.T.1", 
        "2001.A.Space.Odyssey" };

for (String s : data) {
    System.out.println(s.replaceAll(
            "(?<=(^|[.])[\\S&&\\D])[.](?=[\\S&&\\D]([.]|$))", "")
            .replace('.', ' '));
}

结果

Hello World
This Is A Test
The SWAT Team
SwaT 
SwaT 1
2001 A Space Odyssey

在正则表达式中,我需要转义点字符的特殊含义。我可以做到,\\.但我更喜欢[.]

所以在正则表达式中,我们有点文字。现在,该点被(?<=...)和包围(?=...)。这些是环视机制的一部分,称为 后向向前

  • 由于需要删除的点具有点(或数据的开头^)和一些非空格\\S,也都是非数字\ D字符,因此可以使用进行测试(?<=(^|[.])[\\S&&\\D])[.]

  • 另外,需要删除的点还具有非空格和非数字字符,并且$在其后还有另一个点(可以选择是数据的结尾),可以写为[.](?=[\\S&&\\D]([.]|$))

根据需要[\\S&&\\D],在字母旁边还可以匹配的字符(例如)!@#$%^&*()-_=+...可以替换[a-zA-Z]为仅英语字母或\\p{IsAlphabetic}Unicode中的所有字母。



 类似资料:
  • 问题内容: 如何在特定索引处拆分字符串?例如,在索引10处分割字符串,使该字符串现在等于直到索引10的所有内容,然后转储其余部分。 问题答案: 关于或取决于索引10是否应包含或不包含索引呢?您必须检查一下。 一个替代方案是

  • 问题内容: 我想知道我是否打算以正确的方式分割字符串?我的代码是: 我只需要字符串的第一部分,这就是为什么我返回第一项的原因。我问是因为我在API中注意到这意味着任何字符,所以现在我陷入了困境。 问题答案: 接受正则表达式,因此你需要转义以免将其视为正则表达式元字符。这是一个例子:

  • 本文向大家介绍批处理中字符串分割实现代码,包括了批处理中字符串分割实现代码的使用技巧和注意事项,需要的朋友参考一下 批处理 字符串分割 实例 使用for命令可以对字符串进行分段处理。 分割字符串 主要解释for语句: delims=;表示以分号作为分隔符,对remain字符串进行分割处理。 tokens=1*,tokens表示分段的方式,tokens=1*表示第一个分隔符;之前的作为一部分,剩下的

  • 问题内容: 我有一个字符串如下: 我想提取数字:872226816,因此在这种情况下,我假设在第二个逗号开始读取数据之后,随后的逗号结束数据读取。 输出示例: 问题答案: 用于String.split()的 Javadoc

  • 问题内容: 每当出现“”时,我都尝试拆分字符串,例如语句test abc。然后,将每个单词中的第一个字母从头到尾移动。我将字母移动到使用原始字符串 所以我的问题是,我将如何分割字符串,然后开始在分割字符串的每个部分中移动字母? 问题答案: 您不必为此进行-transform-join;一步就能做到。 正则表达式基本上分为3组: 那么,作为替换字符串使它明显和清晰,切换和周围。 因此,应该清楚的是,

  • String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式: 其中它们的含义如下: str 为需要分割的目标字符串。 sign 为指定的分割符,可以是任意字符串。 limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。 使用分隔符注意如下: 1)“.”和“|”都是转