ICSharpCode.SharpZipLib.Zip.WindowsNameTransform.MakeValidName C# (CSharp) Method

MakeValidName() public static method

Force a name to be valid by replacing invalid characters with a fixed value
public static MakeValidName ( string name, char replacement ) : string
name string The name to make valid
replacement char The replacement character to use for any invalid characters.
return string
        public static string MakeValidName(string name, char replacement)
        {
            if (name == null) {
                throw new ArgumentNullException(nameof(name));
            }

            name = WindowsPathUtils.DropPathRoot(name.Replace("/", Path.DirectorySeparatorChar.ToString()));

            // Drop any leading slashes.
            while ((name.Length > 0) && (name[0] == Path.DirectorySeparatorChar)) {
                name = name.Remove(0, 1);
            }

            // Drop any trailing slashes.
            while ((name.Length > 0) && (name[name.Length - 1] == Path.DirectorySeparatorChar)) {
                name = name.Remove(name.Length - 1, 1);
            }

            // Convert consecutive \\ characters to \
            int index = name.IndexOf(string.Format("{0}{0}", Path.DirectorySeparatorChar), StringComparison.Ordinal);
            while (index >= 0) {
                name = name.Remove(index, 1);
                index = name.IndexOf(string.Format("{0}{0}", Path.DirectorySeparatorChar), StringComparison.Ordinal);
            }

            // Convert any invalid characters using the replacement one.
            index = name.IndexOfAny(InvalidEntryChars);
            if (index >= 0) {
                var builder = new StringBuilder(name);

                while (index >= 0) {
                    builder[index] = replacement;

                    if (index >= name.Length) {
                        index = -1;
                    } else {
                        index = name.IndexOfAny(InvalidEntryChars, index + 1);
                    }
                }
                name = builder.ToString();
            }

            // Check for names greater than MaxPath characters.
            // TODO: Were is CLR version of MaxPath defined?  Can't find it in Environment.
            if (name.Length > MaxPath) {
                throw new PathTooLongException();
            }

            return name;
        }

Usage Example

Example #1
0
 // Token: 0x060008FD RID: 2301 RVA: 0x00032FFC File Offset: 0x000311FC
 public string TransformFile(string name)
 {
     if (name != null)
     {
         name = WindowsNameTransform.MakeValidName(name, this._replacementChar);
         if (this._trimIncomingPaths)
         {
             name = Path.GetFileName(name);
         }
         if (this._baseDirectory != null)
         {
             name = Path.Combine(this._baseDirectory, name);
         }
     }
     else
     {
         name = string.Empty;
     }
     return(name);
 }
All Usage Examples Of ICSharpCode.SharpZipLib.Zip.WindowsNameTransform::MakeValidName