java - 拆分分隔符java
问题描述
我在stackoverflow中搜索时找到了答案,它工作得很好但是当我看到用户没有解释代码是如何工作的评论时,有人可以向我解释这段代码是什么意思吗?...
String input =
" [John, 8, 9, 10, \r\n"
+ " , Peter, 10, 8, 7, \r\n"
+ " , Steve, 8, 9, 6, \r\n"
+ " ]";
String output = input.replaceAll("(?m)^[\\s,\\[]+|[\\s,\\]]+$|[\\s&&[^\r\n]]+", "");
System.out.println(output);
解决方案
从评论中回答您的问题:
"[\s&&[^\r\n]]+" 这是我完全不理解的部分,我不明白逗号消失的地方,而 is nocomma 分隔符,只有括号分隔符" – Jansen Stanlie
我将忽略字符串转义并将其写为真正的正则表达式。在正则表达式的 java 风格中,您可以使用以下方法进行类交集和减法:
[..&&[..]]和[..&&[^..]分别。将 .. 替换为您的角色类别和包含/排除范围。
例如
[az&&[^aeiou]]会给你一个不是元音的英文小写字母。
因此,在您的示例中(删除 java 字符串转义) [\s&&[^\r\n]] - \s 任何空白字符,\r 或 \n 除外。这样做是为了消除所有空格但保留换行符。
这也可以写为 [\s&&[\V]],这将使其符合 Unicode。\V 是任何不是垂直空格的字符。
关于逗号删除位置的问题:此处删除了前导逗号:
(?m)^[\\s,\\[]+|[\\s,\\]]+$|[\\s&&[^\r\n]]+
^
和尾随:
(?m)^[\\s,\\[]+|[\\s,\\]]+$|[\\s&&[^\r\n]]+
^
推荐阅读
- android - 在ROOM中连接表时,表中的字段同名问题
- laravel - Laravel 未定义变量错误
- unix - 使用 Unix 按多列分组(一列以逗号分隔,另一列以 sum )
- android - 当我在 Kotlin 中使用 Delegates 时,map 和 mapVal 之间哪一个是正确的?
- spring-boot - 无法加载资源:net::ERR_CERT_AUTHORITY_INVALID Angular 4
- sql - PL/SQL Oracle - 将行动态转换为字段
- wpf - 如何在通过 HierarchicalDataTemplate wpf 生成的菜单项和子菜单项中保留两个不同的命令
- python-3.x - 龙卷风读取直到关闭方法错误
- sql - 如何为 PostgreSQL 中的自链接记录设计最佳实践数据结构?
- javascript - 使用 java 脚本在网页中插入中断