繁体   English   中英

如何删除存储在ArrayList中的特定字符串

[英]How to remove specific String stored in an ArrayList

我有一个存储值以供以后使用的代码。 但是我需要找到确切的名称而不是整个名称。 我得到如下输出:

输出结果显示: [ Ranjit Nayak ( Attorney ), ranjti Nyak ( Case Manager ), shenoy attorney ( Parallegal ) ]

因此,我需要使用某种方法来删除包括方括号在内的内容。 请帮忙。

在代码中: CaseManagersreceivingreminders是一个全局ArrayList ,我有一个类似的另一个ArrayList存储值。 字符串编辑成功后,我需要比较两个数组值。

尝试trimreplace 什么都没有。

    List<WebElement> PMPageCMList =
        driver.findElements(By.xpath("//div[@id='collapseCM']/div[2]/div[2]/div"));

    int totalcms = PMPageCMList.size();
    for (int i = 1; i <= totalcms; i++) {
        CaseManagersreceivingreminders.add(
            driver
                .findElement(By.xpath("//div[@id='collapseCM']/div[2]/div[2]/div" + "[" + i + "]" + "/span"))
                .getText()
        );
    }

    Collections.sort(CaseManagersreceivingreminders);
    Collections.sort(ReminderCMsList);

    try {
        boolean isEqual = CaseManagersreceivingreminders.contains(ReminderCMsList);
        System.out.println(isEqual);
        Log.pass("Data matching" + isEqual);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

我应该得到如下输出: [ Ranjit Nayak, ranjti Nyak, shenoy attorney ]

您的Collection CaseManagersreceivingreminders是一个字符串列表,因此只需遍历该列表,对于拆分为'('每个字符串并将新字符串保存在新列表中。

for (String names : CaseManagersreceivingreminders) {
    CaseManagersreceivingreminders_New.add(names.split("(")[0]);
}

您可以使用正则表达式删除字符串的(...)部分:

List<String> newList =  new ArrayList<>();

for(String s: CaseManagersreceivingreminders) {
    s = s.replaceAll("\\(.*\\)", "");
    newList.add(s);
}

System.out.println(newList);

输出:

[Ranjit Nayak, ranjti Nyak, shenoy attorney]

关于\\\\(.*\\\\)正则表达式:

  • \\\\(\\\\) :对于任何特殊字符(() ,应在匹配之前使用\\\\
  • .* :匹配任何字符零次或多次。

因此\\\\(.*\\\\)表达式可以匹配诸如( Attorney )之类的字符串的一部分

使用ListreplaceAll()方法和合适的UnaryOperator

list.replaceAll(s -> s.replaceAll(" *[(].+?[)]", ""));

您可以使用以下正则表达式从每个字符串中删除(...)部分: \\s*\\(.*\\)

如果要更新现有列表,可以使用List.replaceAll()

Pattern pattern = Pattern.compile("\\s*\\(.*\\)");
list.replaceAll(s -> pattern.matcher(s).replaceAll(""));

另外,如果要使用结果创建新列表,则可以使用Java Streams:

Pattern pattern = Pattern.compile("\\s*\\(.*\\)");
List<String> result = list.stream()
        .map(s -> pattern.matcher(s).replaceAll(""))
        .collect(Collectors.toList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM