java - 如何在java中删除字符串的第一个 "to"到第一个逗号(,)之间的值

标签 java

我有一个字符串:

Expected attribute value 'internalClosureRule' but was 'internalClosureRule2' - comparing <Option name="internalClosureRule"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name to <Option name="internalClosureRule2"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,
Expected attribute value 'opt_cpd_p2s_skip' but was 'opt_cpd_p2s_skip2' - comparing <Option name="internalClosureRule"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name to <Option name="internalClosureRule2"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name

我想删除第一个“to”中的值,直到第一个逗号(,),并且对于字符串中的“,”分隔值应采用相同的模式,即 我想在单独的行中打印我的字符串,其中没有“to”,直到最后的“,”逗号。

我的预期输出是:

Expected attribute value 'internalClosureRule' but was 'internalClosureRule2' - comparing <Option name="internalClosureRule"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,
Expected attribute value 'opt_cpd_p2s_skip' but was 'opt_cpd_p2s_skip2' - comparing <Option name="internalClosureRule"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,

有人可以提供帮助吗?

最佳答案

实现此目的的一种方法是使用带有正则表达式的 String#replaceAll 方法,并将其替换为空字符串 ("")。在你的情况下,模式很简单,而且是

到.*,

地点:

to -> 表示“to”一词。

.* -> 对于任何字符

, -> 表示逗号

    @Test
    public void fromFirstToTillComma()
    {
        String string = "Expected attribute value 'internalClosureRule' but was 'internalClosureRule2' - comparing <Option name=\"internalClosureRule\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name to <Option name=\"internalClosureRule2\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,";
        String expected = "Expected attribute value 'internalClosureRule' but was 'internalClosureRule2' - comparing <Option name=\"internalClosureRule\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,";
        string = string.replaceAll("to.*,", "").trim();
        string += ",";
        assertEquals(expected, string);
    }

有关模式的更多信息,请参见here.

<小时/>

评论后: 不要同时处理所有值,而是通过用逗号分割值来将问题分解为更小的问题。然后你将把每个值分开,你可以使用我的正则表达式。最后再次对值进行求和,并用逗号分隔。

代码:

@Test
public void fromFirstToTillComma() {
    String string = "Expected attribute value 'internalClosureRule' but was 'internalClosureRule2' - comparing <Option name=\"internalClosureRule\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name to <Option name=\"internalClosureRule2\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,"
            + "Expected attribute value 'opt_cpd_p2s_skip' but was 'opt_cpd_p2s_skip2' - comparing <Option name=\"internalClosureRule\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name to <Option name=\"internalClosureRule2\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,";
    String expected = "Expected attribute value 'internalClosureRule' but was 'internalClosureRule2' - comparing <Option name=\"internalClosureRule\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,"
            + "Expected attribute value 'opt_cpd_p2s_skip' but was 'opt_cpd_p2s_skip2' - comparing <Option name=\"internalClosureRule\"...> at /TCXML[1]/Header[1]/TransferFormula[1]/OptionSet[1]/Option[1]/@name,";

    String lines[] = string.split(",");
    StringBuilder sb = new StringBuilder();
    for (String line : lines) {
        line += ","; //Add the comma at the end because string.split(",") removed it
        line = line.replaceAll("to.*,", "").trim();
        sb.append(line);
        sb.append(","); //Each value separated with comma
    }
    String clear = sb.toString().trim();
    assertEquals(expected, clear);
}

关于java - 如何在java中删除字符串的第一个 "to"到第一个逗号(,)之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219315/

相关文章:

java - 未定义名为 'springSecurityFilterChain' 的 bean - Spring 4 Java 配置

java - 你有 Java 8 功能接口(interface)列表吗(不是 java.util.function 中列出的那些)?

java - 获取整棵树的 JPA 查询

java - Spring security 3.2 - CSS 显示问题

java - struts2 中的国际化

java - hibernate查询实体不按id

java - Java有指针吗?如果是,如何操纵它们?

java - 使用CSRF登录后如何启用Spring Security POST重定向?

java - JAXRS 客户端找不到消息正文编写器

java - 如何打印这个特定的斐波那契数列?