>백엔드 개발 >C++ >C#의 파일 경로 및 파일 이름에서 잘못된 문자를 효과적으로 제거하는 방법은 무엇입니까?

C#의 파일 경로 및 파일 이름에서 잘못된 문자를 효과적으로 제거하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-21 08:51:101062검색

How to Effectively Remove Illegal Characters from File Paths and Filenames in C#?

경로 및 파일 이름에서 잘못된 문자 지우기

파일 시스템 무결성을 보호하고 운영 체제 간 호환성을 보장하기 위해 경로 및 파일 이름에서 특정 문자는 잘못된 것으로 간주됩니다. 이러한 문자를 제거하는 것은 성공적인 파일 작업 및 저장 작업에 중요합니다.

이 문제를 해결하는 일반적인 방법은 System.IO 네임스페이스에서 Path.GetInvalidFileNameChars() 및 Path.GetInvalidPathChars() 메서드를 사용하는 것입니다. 그러나 원래 질문에 제공된 코드는 필요한 작업을 올바르게 수행하지 않습니다. 문제는 선행 및 후행 공백 문자만 제거하는 Trim() 메서드에 의존한다는 것입니다.

이 문제를 해결하려면 문자열에서 잘못된 문자를 모두 정리하는 더 강력하고 포괄적인 방법이 필요합니다. 효과적인 해결책은 Split() 메서드를 사용하여 잘못된 문자 집합에 따라 문자열을 분할하는 것입니다. 그런 다음 결과 배열을 다시 함께 재조립하여 문제 문자가 없는 문자열을 형성할 수 있습니다.

다음은 지정된 문자열에서 잘못된 문자를 효과적으로 제거하는 수정된 코드 버전입니다.

<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.?";

            // 删除非法文件字符
            string withoutFileInvalidChars = string.Concat(illegal.Split(Path.GetInvalidFileNameChars()));

            // 删除非法路径字符
            string withoutPathInvalidChars = string.Concat(withoutFileInvalidChars.Split(Path.GetInvalidPathChars()));

            Console.WriteLine(withoutPathInvalidChars);
            Console.ReadLine();
        }
    }
}</code>

또한, 불법 문자를 단순히 삭제하는 대신 적합한 대체 문자로 바꾸도록 선택할 수도 있습니다. 이렇게 하려면 다음 코드 조각에 표시된 대로 원하는 구분 기호와 함께 string.Join() 메서드를 사용하세요.

<code class="language-csharp">string replacedInvalidChars = string.Join("_", illegal.Split(Path.GetInvalidFileNameChars()));</code>

이 방법은 모든 잘못된 문자를 밑줄로 대체하여 읽기 쉽고 일관된 문자열을 제공합니다. 특정 대체 문자는 특정 요구 사항에 맞게 사용자 정의할 수 있습니다.

위 내용은 C#의 파일 경로 및 파일 이름에서 잘못된 문자를 효과적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.