如何在Java中将无效字符更改为有效字符?
现在我调用这个函数:如何在Java中将无效字符更改为有效字符?,java,regex,Java,Regex,现在我调用这个函数: private static void isValidName(String[] filename){ FileSystem fs = FileSystems.getDefault(); System.out.println(fs); String pattern = ("^[\\w&[^?\\\\/. ]]+?\\.*[\\w&[^?\\\\/. ]]+$"); for (String
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));
}
}
如果(s.matches(pattern)==false)中的无效字符为有效字符,如何替换中的无效字符
输出:
false
您可以使用此代码删除/替换无效字符:
String[] name2={"valami.txt."};
isValidName(name2);
看
输出:
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, "_"));
}
REGEX包含多个与|
交替运算符连接的可选项,以仅匹配无效字符
^[.]+
-匹配1个或多个前导空格或点
\\.+$
-匹配最终的
,出现1次或更多次(如果您还计划替换尾随空格,请更改为[.]+$
)
\\。(?=[^.]*\.[^.]*$)
-匹配一个
后接可选字符数和另一个点(因此,保留字符串中的最后一个点)
[?\\\/:;]
-匹配?
,\
,/
,:
和代码>字面意思
请更具体一点。有什么问题?哪些字符无效?你想做什么?如果您只是想将无效字符替换为一些有效字符,您可以使用replaceAll,例如,我猜它是的延续。那么,替代品应该是什么样子呢?所有无效字符的\u
字符?不以空格“”开头,不超过一个“.”,不以“.”开头,不以“.”结尾,不以“.”结尾:;在文件中。是的,stribizhev替换为u例如。@kokoko重复的问题被标记为删除。它不是同一个问题。。。。
foo_tar.gz
_foo.txt
foo_
foo_
foo_
_foo
foo_