【问题标题】:Remove White Spaces between Specific Substring in a String [duplicate]删除字符串中特定子字符串之间的空格[重复]
【发布时间】:2018-05-15 19:44:28
【问题描述】:

c我想要的是删除<abc>标签之间的所有空格并保留<efg>标签之间的空格

<abc>this is between abc</abc><efg>this is between efg</efg>
<efg>this is between efg</efg><abc>this is between abc</abc>

我想要输出:

<abc>thisisbetweenabc</abc><efg>this is between efg</efg>
<efg>this is between efg</efg><abc>thisisbetweenabc</abc>

string = string.replaceAll("&lt;abc&gt; &lt;/abc&gt;", ""); 它不适合我

【问题讨论】:

标签: java android regex whitespace removing-whitespace


【解决方案1】:

简介

我强烈建议您使用XML parser!!! 无论如何,如果是 a limited, known set of HTML,您可以使用以下正则表达式(根据我的原始评论) .

注意:此解决方案适用于有限已知组 HTML强>。如果您输入的内容与您在问题中发布的内容不同,则此解决方案可能不起作用。请参阅您的问题下方的 Pshemo 评论。

注意 2:OP 更改了输入的格式,因此我原来的答案将不再有效。请参阅下面的原始输入。 (这正是我放置 limitedknown 组 HTML 的原因)。在 代码 部分,我添加了第二个正则表达式,适用于 OP 新添加的输入。


代码

See regex in use here

(?:^(<abc>)|\G(?!^))(\S+)[ \t]*

替换为$1$2

使用新的输入格式,可以使用以下正则表达式 (as seen in use here):

(?:^(<abc>)|\G(?!^))([^\s<]+)[ \t]*

结果

输入

<abc>this is between abc</abc>
<efg>this is between efg</efg>
<abc>this is between abc</abc>
<efg>this is between efg</efg>

输出

<abc>thisisbetweenabc</abc>
<efg>this is between efg</efg>
<abc>thisisbetweenabc</abc>
<efg>this is between efg</efg>

说明

  • (?:^(&lt;abc&gt;)|\G(?!^)) 匹配以下任意一项
    • ^(&lt;abc&gt;) 匹配以下
      • ^ 在行首断言位置
      • (&lt;abc&gt;)&lt;abc&gt; 捕获到捕获组 1
    • \G(?!^) 在上一场比赛结束时断言位置
  • (\S+) 将任何非空白字符一次或多次捕获到捕获组 2 中
  • [ \t]* 匹配空格或制表符任意次数

【讨论】:

  • 对不起,我是新手,我修改了这个问题,我知道我很愚蠢,请帮忙
  • @ShamsheerKaur 我更新了我的答案。您真的应该为此使用 XML 解析器。
【解决方案2】:

简单就做

xml = my overall string with <abc> and </abc> stuff
start = xml.indexOf('<abc>')
end = xml.indexOf('</abc>')
totalCharsToInclude = end - start (get the length to run from start)

abcOnly = xml.subString(start, totalCharsToInclude), 
abcOnly = abcOnly.replace(" ", "")

这都是伪代码,但你可以很容易地模仿它。您可能还需要用加号或减号调整索引,我不在您的代码前面进行测试,但您应该能够从中获得所需的内容。

免责声明:使用 XML 解析器比处理字符串要好得多,但是我假设您有您的理由,所以我会回答您提出的问题,而不是告诉您去获取 XML 解析器哈哈.祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 2013-12-08
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2023-01-31
    • 2020-07-29
    相关资源
    最近更新 更多