C # WinForms 앱에 RichTextBox
. 이 텍스트 상자에는 모든 유니 코드 문자 (또는 최소한 가능한 한 많이)로 무작위로 생성 된 문자열이 포함됩니다. 문제는 일부 문자를 표시 할 수 없다는 것입니다. 중단 점 등을 사용하여 VS를 체크인하면 문자가 정확하므로 표시 문제 일뿐입니다. 그림을 참조하십시오. 텍스트 상자에 이러한 문자를 올바르게 표시하거나 생성되지 않도록 코드에서 필터링하는 방법이 있습니까?
다음은 생성에 사용하는 코드입니다 (지금은 모두 생성하지만 나중에 임의의 숫자가됩니다).
string key = "";
for (int i = 1; i <= length; i++)
{
key += (char)i;
}
다음은 텍스트 상자에 표시되는 이미지입니다.
이러한 빈 사각형은 실제로 문자, 탭, "전송 종료" 등과 같은 문자 및 숫자와 같은 의미있는 방식으로 표시 할 수없는 제어 (및 기타) 문자입니다 null
.
클래스 에서 몇 가지 메소드를 사용하여 결과를 인쇄 가능한 문자 로 제한 할 수 있습니다 Char
.
string key = "";
for (int i = 1; i <= length; i++)
{
var c = (char)i;
if (Char.IsPunctuation(c) || Char.IsLetterOrDigit(c))
key += c;
}
완벽하지 않습니다. 여전히 인쇄 할 수없는 문자가 있지만 스크린 샷보다 훨씬 적습니다.
나는 아마도 모든 문자열 연결을 피하려고 할 것입니다. 다음은 문자 배열을 만든 다음 문자열 "length"
수를 만드는 대신 하나의 문자열을 만듭니다 .
var key = new string(Enumerable.Range(1, length)
.Select(i => (char)i)
.Where(c => Char.IsPunctuation(c)
|| Char.IsLetterOrDigit(c))
.ToArray());
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다