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
Javascript 是否用循环替换无效字符集?或者可能是正则表达式?_Javascript_Regex - Fatal编程技术网

Javascript 是否用循环替换无效字符集?或者可能是正则表达式?

Javascript 是否用循环替换无效字符集?或者可能是正则表达式?,javascript,regex,Javascript,Regex,我有一长串replace语句来去除文件名中的以下字符(来自C#源代码): 有没有一种JS方法可以迭代地替换循环中的这些特殊字符?或者是否有一个正则表达式可以用来处理'\u00xx'字符(我从未见过这样做)?这个C定义范围中的第一个字符是'\u0001',最后一个字符是'\u001f'JavaScript:(我没有检查语法,但类似的东西应该适用于JS) 也许这对你来说足够了: foreach (var invalidFileNameChar in Path.GetInvalidFileNa

我有一长串replace语句来去除文件名中的以下字符(来自C#源代码):

有没有一种JS方法可以迭代地替换循环中的这些特殊字符?或者是否有一个正则表达式可以用来处理
'\u00xx'
字符(我从未见过这样做)?这个C定义范围中的第一个字符是
'\u0001'
,最后一个字符是
'\u001f'

JavaScript:(我没有检查语法,但类似的东西应该适用于JS)

也许这对你来说足够了:

    foreach (var invalidFileNameChar in Path.GetInvalidFileNameChars()) {
        fileName = fileName.Replace(invalidFileNameChar, '_');
    }

使用字符类:
[此处的所有字符]+
。这需要替换为例如
。您为什么要这样做?删除无效字符。我只是试图阻止System.ArgumentException“路径中的非法字符”的引发。如果这就是您试图做的所有事情,那么在C#端执行此操作,并根据
path.GetInvalidFileNameChars()
返回的内容进行删除。以后,请更明确地回答您的问题和标记。我已经删除了C#标记,因为这与C#无关,因为它正在寻找一个JavaScript解决方案
var r = s.replace('\u0001','_').replace('\u0002', '_') ....etc...;
for (var i = 0; i < RealInvalidPathChars.length ; i++) {
    s = s.replace(RealInvalidPathChars[i], '_');
}
    public static string GetValidFileName(string fileName, char replacementCharForInvalidChars = '_', int maxLength = 120, string defaultExtention = "", string defaultFileNameIfFilenameIsInvalid = "_") {
        if (string.IsNullOrWhiteSpace(fileName)) return defaultFileNameIfFilenameIsInvalid;
        var ret = fileName.Trim();
        foreach (var invalidFileNameChar in Path.GetInvalidFileNameChars()) {
            ret = ret.Replace(invalidFileNameChar, replacementCharForInvalidChars);
        }
        var newfileName = Path.GetFileNameWithoutExtension(ret);
        if (string.IsNullOrWhiteSpace(newfileName)) newfileName = defaultFileNameIfFilenameIsInvalid;
        var newExtention = Path.GetExtension(ret);
        if (string.IsNullOrWhiteSpace(newExtention)) newExtention = defaultExtention;

        if (newfileName.Length + newExtention.Length > maxLength) {
            if (newExtention.Length > maxLength - (maxLength / 10)) {
                //Ensure a minimum length of the FileName and cut Extention - which is probably not a real File Extention
                newfileName = Left(newfileName, maxLength / 10);
                newExtention = Left(newExtention, maxLength - newfileName.Length);
            } else {
                newfileName = Left(newfileName, maxLength - newExtention.Length);
            }
        }
        ret = newfileName + newExtention;

        return ret;
    }
    foreach (var invalidFileNameChar in Path.GetInvalidFileNameChars()) {
        fileName = fileName.Replace(invalidFileNameChar, '_');
    }