【问题标题】:How to only remove one character if there are two consecutive characters in the string (using regex)如果字符串中有两个连续字符,如何仅删除一个字符(使用正则表达式)
【发布时间】:2022-01-16 04:25:28
【问题描述】:

我有一个这样的字符列表:[[P, A, H, N, ,], [A, P, L, S, I, I, G, ,], [Y, I, R]]。

预期输出为字符列表中每个字符的字符串

预期输出:“PAHN,APLSIIG,YIR”。

我的代码

String str = "";
//code#1
for(int j=0; j<list.size(); j++){
   str += Arrays.toString(list.get(j).toArray(new Character[0])).replaceAll("[\\]\\[,]", 
   "").replaceAll(" ", "");
}

代码#1中的str:“PAHNAPLSIIGYIR”

字符串列表

String str = "";

//code#2, converts a list into String
for(int j=0; j<list.size(); j++){
   str += Arrays.toString(list.get(j).toArray(new Character[0])).replaceAll(" ", "");
}

代码#2中的str:[P,A,H,N,,][A,P,L,S,I,I,G,,][Y,I,R ]

检查此代码以更好地理解: [https://onecompiler.com/java/3xm55ywr6][1]

我的问题

代码#2中的字符串有两个连续的','字符,可以在字符'N'和'G'之后看到,如果有两个','在一起,如何只替换一个','字符? ??

【问题讨论】:

  • 请包含列表列表的定义。

标签: java regex nested-lists


【解决方案1】:

如果您需要整理列表

private static String flatLists(List<List<String>> asList) {
        return asList.stream()
                .flatMap(List::stream)
                .filter(s -> !s.equals(" "))
                .collect(Collectors.joining());
    }

输出:

PAHNAPLSIIGYIR

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解你的问题

    但是,如果您的目标是删除所有逗号、空格和方括号,那么下面的正则表达式应该可以工作

    [\[\],\s]
    

    你可以在这里测试一下

    https://regex101.com/r/j0OIOH/1

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多