gpt4 book ai didi

java - Java中如何将无效字符更改为有效字符?

转载 作者:行者123 更新时间:2023-11-30 03:22:19 27 4
gpt4 key购买 nike

 private static void isValidName(String[] filename){
FileSystem fs = FileSystems.getDefault();
System.out.println(fs);

String pattern = ("^[\\w&[^?\\\\/. ]]+?\\.*[\\w&[^?\\\\/. ]]+$");

for (String s: filename) {
//System.out.println(s.matches(pattern));
if (s.matches(pattern)==false){

System.out.println(s.matches(pattern));

}
}

现在我调用这个函数:

 String[] name2={"valami.txt."};
isValidName(name2);

如何用有效字符替换 if(s.matches(pattern)==false) 中的无效字符?

输出:

最佳答案

您可以使用这段代码来删除/替换无效字符:

String[] bad = {
"foo.tar.gz",
" foo.txt",
"foo?",
"foo/",
"foo\\",
".foo",
"foo."
};
String remove_pattern = "^[ .]+|\\.+$|\\.(?=[^.]*\\.[^.]*$)|[?\\\\/:;]";
for (String s: bad) {
System.out.println(s.replaceAll(remove_pattern, "_"));
}

参见IDEONE demo

输出:

foo_tar.gz
_foo.txt
foo_
foo_
foo_
_foo
foo_

REGEX 包含多个与 | 交替运算符连接的替代项,以仅匹配无效字符。

  • ^[ .]+ - 匹配 1 个或多个前导空格或点
  • \\.+$ - 匹配最后的 .,出现 1 次或多次(如果您打算更改为 [.]+$也替换尾随空格)
  • \\.(?=[^.]*\\.[^.]*$) - 匹配后跟可选数量的 .字符和另一个点(因此,留下字符串中的最后一个点)
  • [?\\\\/:;] - 匹配 ?\/:; 字面上。

关于java - Java中如何将无效字符更改为有效字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31044568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com