Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中将无效字符更改为有效字符?_Java_Regex - Fatal编程技术网

如何在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_