【问题标题】:Java search String then duplicate and replaceJava搜索字符串然后复制和替换
【发布时间】:2020-02-06 22:18:47
【问题描述】:

(绝对初学者在这里)所以我有一个看起来像这样的列表:

XX5.9
XX5.10
XY5.9
XY5.10

我的计划是一个小程序,它搜索5.9(作为一个字符串。它们都是。),复制它并将它放在上面。然后将其更改为5.8。像这样:

XX5.8 <-- New
XX5.9
XX5.10
XY5.8 <--New
XY5.9
XY5.10

我需要如何在 Java 中做到这一点? (我现在没有任何代码)

【问题讨论】:

  • 请尝试自己执行此操作,然后发布您的代码。这是一个乐于帮助您但不会为您工作的社区。​​span>
  • 实际的问题是有太多可能的解决方案。你为什么不首先开始,编写你的程序来读取你的字符串列表(从文件、用户输入或网络服务器......),将它保存在一个变量中(一个字符串、一个字符串数组、一个列表.. ..) 然后调用更改 searchString 的方法。然后我们可以查看搜索字符串是动态的还是静态的(就像总是 5.9)然后(并且只有这样)这个社区可以为您的问题提供实际有用的答案。
  • 你的意思是你有一个List&lt;String&gt; 还是一个文本文件?

标签: java string search replace duplicates


【解决方案1】:

假设您向我们展示的输入存储在常规 Java 字符串中,您可以尝试以下正则表达式替换:

String input = "XX5.9\nXX5.10\nXY5.9\nXY5.10";
System.out.println(input + "\n");
String output = input.replaceAll("\\b([A-Z]+)5\\.9\\b", "$15.8\n$15.9");
System.out.println(output);

打印出来:

XX5.9
XX5.10
XY5.9
XY5.10

XX5.8
XX5.9
XX5.10
XY5.8
XY5.9
XY5.10

【讨论】:

    【解决方案2】:

    最好将您尝试过的解决方案提供给我们,以便我们为您提供帮助。

    对于这个问题,我会写如下:

    List<String> strings = Arrays.asList("XX5.9", "XX5.10", "XY5.9", "XY5.10");
    
            strings.stream().flatMap(x -> {
                if (x.contains("5.9")) {
                    return Stream.of(x.replaceFirst("5.9", "5.8"), x);
                } else {
                    return Stream.of(x);
                }
            }).collect(Collectors.toList())
             .forEach(System.out::println); // this is for debug purpose
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      相关资源
      最近更新 更多