경로 및 파일 이름에서 잘못된 문자 지우기
이 프로그래밍 예제의 작업은 오류를 생성하지 않고 문자열에서 잘못된 경로와 파일 문자를 제거하는 것입니다. 주어진 코드는 이 문제를 해결하기 위한 것이지만 작동하지 않는 것 같습니다. 누락된 부분을 분석해 보겠습니다.
코드는 Trim
메서드를 사용하여 문자열에서 잘못된 문자를 제거하려고 시도합니다. 그러나 Trim
은 문자열의 시작과 끝 부분에 있는 공백, 탭 등의 공백 문자만 제거할 수 있습니다. 공백이 아닌 문자에는 영향을 주지 않습니다.
불법 문자를 효과적으로 제거하려면 System.IO
네임스페이스에서 제공하는 특정 방법을 사용해야 합니다. 이 작업을 효율적으로 처리하는 수정된 코드는 다음과 같습니다.
<code class="language-csharp">using System; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string illegal = " \"M\"\"\a/ry/ h**ad:>> a\/:*?\"| li*tt|le|| la\"mb.?"; // 删除无效的文件字符 illegal = illegal.Replace(Path.GetInvalidFileNameChars(), ""); // 删除无效的路径字符 illegal = illegal.Replace(Path.GetInvalidPathChars(), ""); Console.WriteLine(illegal); Console.ReadLine(); } } }</code>
이 수정된 코드에서는 Replace
메서드를 Trim
메서드로 대체했습니다. 이를 통해 문자열에서 제거할 문자를 지정할 수 있습니다. Path.GetInvalidFileNameChars()
및 Path.GetInvalidPathChars()
을 호출하면 각각 유효하지 않은 파일 및 경로 문자 배열을 얻습니다. 그런 다음 이러한 배열을 대체할 문자로 전달하여 원래 문자열에서 효과적으로 제거합니다.
Ceres가 다른 토론 스레드에서 제공한 또 다른 솔루션은 다음과 같습니다.
<code class="language-csharp">public string RemoveInvalidChars(string filename) { return string.Concat(filename.Split(Path.GetInvalidFileNameChars())); }</code>
이 코드는 Split
메서드를 사용하여 유효하지 않은 문자 위치에서 문자열을 분할한 다음 결과 하위 문자열을 재조립하여 유효하지 않은 문자를 포함하지 않는 새 문자열을 만듭니다.
잘못된 문자를 밑줄과 같은 특정 문자로 바꾸는 것이 좋습니다.
<code class="language-csharp">public string ReplaceInvalidChars(string filename) { return string.Join("_", filename.Split(Path.GetInvalidFileNameChars())); }</code>
이 코드는 유효하지 않은 모든 문자를 밑줄로 대체하므로 경로나 파일 이름의 원래 구조를 유지하려는 시나리오에 적합합니다.
이러한 솔루션은 파일 및 경로 문자열에서 불법 문자를 제거하여 호환성을 보장하고 잠재적인 파일 시스템 오류를 방지하는 강력하고 효과적인 방법을 제공합니다.
위 내용은 파일 경로 및 파일 이름에서 불법 문자를 효과적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!