System.IO.Path.Path.CleanPath C# (CSharp) Méthode

CleanPath() static private méthode

static private CleanPath ( string s ) : string
s string
Résultat string
		internal static string CleanPath (string s)
		{
			int l = s.Length;
			int sub = 0;
			int start = 0;

			// Host prefix?
			char s0 = s [0];
			if (l > 2 && s0 == '\\' && s [1] == '\\'){
				start = 2;
			}

			// We are only left with root
			if (l == 1 && (s0 == DirectorySeparatorChar || s0 == AltDirectorySeparatorChar))
				return s;

			// Cleanup
			for (int i = start; i < l; i++){
				char c = s [i];
				
				if (c != DirectorySeparatorChar && c != AltDirectorySeparatorChar)
					continue;
				if (i+1 == l)
					sub++;
				else {
					c = s [i + 1];
					if (c == DirectorySeparatorChar || c == AltDirectorySeparatorChar)
						sub++;
				}
			}

			if (sub == 0)
				return s;

			char [] copy = new char [l-sub];
			if (start != 0){
				copy [0] = '\\';
				copy [1] = '\\';
			}
			for (int i = start, j = start; i < l && j < copy.Length; i++){
				char c = s [i];

				if (c != DirectorySeparatorChar && c != AltDirectorySeparatorChar){
					copy [j++] = c;
					continue;
				}

				// For non-trailing cases.
				if (j+1 != copy.Length){
					copy [j++] = DirectorySeparatorChar;
					for (;i < l-1; i++){
						c = s [i+1];
						if (c != DirectorySeparatorChar && c != AltDirectorySeparatorChar)
							break;
					}
				}
			}
			return new String (copy);
		}