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

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

DDD
DDD원래의
2025-01-21 09:06:12254검색

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

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

이 프로그래밍 예제의 작업은 오류를 생성하지 않고 문자열에서 잘못된 경로와 파일 문자를 제거하는 것입니다. 주어진 코드는 이 문제를 해결하기 위한 것이지만 작동하지 않는 것 같습니다. 누락된 부분을 분석해 보겠습니다.

코드는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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