문제

왜 이것이 아무것도하지 않으며, 출력은 입력과 동일합니까? 나는 당황했다 !!!

string name = ";;;'']][[ zion \\\[[[]]]"  
char[] invalidChars = System.IO.Path.GetInvalidPathChars();
string invalidString = Regex.Escape(new string(invalidChars));

string valid = Regex.Replace(name, "[" + invalidString + "]", "");
도움이 되었습니까?

해결책

편집하다:

나는 그것이 불완전한 테스트 데이터의 경우 일 수 있다고 생각합니다 (다른 사람들이 제안한 기능 변경과 함께). 이 시도:

string name = "tru\\e.jpg";
char[] invalidChars = System.IO.Path.GetInvalidFileNameChars();
string invalidString = Regex.Escape(new string(invalidChars));
string valid = Regex.Replace(name, "[" + invalidString + "]", "");
Console.WriteLine(valid);

"true.jpg"출력을 얻습니다. 나는 이것을 생산에서 사용하기 전에 훨씬 더 많은 테스트를 제안 할 것입니다! :)

다른 팁

유효하지 않은 파일 문자를 사용하여

char[] invalidChars=System.IO.Path.GetInvalidFileNameChars();

아무것도하지 않을 것이라는 것은 무엇을 의미합니까? 콘솔 응용 프로그램에서 다음을 실행했습니다.

string name = ";;;'']][[ zion \\\\[[[]]]";
char[] invalidChars = System.IO.Path.GetInvalidPathChars();
string invalidString = Regex.Escape(new string(invalidChars));

string valid = Regex.Replace(name, "[" + invalidString + "]", "");
Console.WriteLine(valid);

그건 그렇고, 당신의 구문이 잘못되었고, 당신은 에스코지가없는 캐릭터가 있었고 당신은 세미콜론을 놓치고있었습니다.

그리고 나는 다음과 같은 결과를 얻었습니다.

;;;'']][[ zion \\[[[]]]

올바른 결과입니다. 아마도 현재 접근 방식이 Regex에 대한 강한 이해가 없다는 것을 나타내는 것처럼 보이기 때문에 자신이 무엇을하려고하는지에 대한 새로운 질문을해야 할 수도 있습니다.

업데이트: 파일 이름을 확인하려고합니까? 그렇다면 사용하고 싶을 것입니다.

System.IO.Path.GetInvalidFileNameChars();

업데이트: 다음은 해당 방법에서 나오는 잘못된 문자 목록입니다. GetInvalidPathChars()

RealInvalidPathChars = new char[] { 
        '"', '<', '>', '|', '\0', '\x0001', '\x0002', '\x0003', '\x0004', '\x0005', '\x0006', '\a', '\b', '\t', '\n', '\v', 
        '\f', '\r', '\x000e', '\x000f', '\x0010', '\x0011', '\x0012', '\x0013', '\x0014', '\x0015', '\x0016', '\x0017', '\x0018', '\x0019', '\x001a', '\x001b', 
        '\x001c', '\x001d', '\x001e', '\x001f'
     };

기본적으로 다음은 잘못된 경로 문자로 ASCII/유니 코드 문자 1 ~ 31, 인용문 ( "), (<), (<), (>), 파이프 (|), 백 스페이스 ( b), NULL이 포함될 수 있습니다. ( 0) 및 탭 ( t).

원래 문자열에서 발생하지 않는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top