2016-09-23 2 views
0

SendKeys의 특정 형식과 호환되도록 string에 이스케이프 문자가 있다고 생각하는 스마트하고 깔끔한 방법이 있습니까? 문자열을 SendKeys.Send() 형식의 문자열로 변환합니다.

는 처음에 나는이 일 것이라고 생각 :

line = Regex.Replace(line, @"\{{0}", "{{}"); 
line = Regex.Replace(line, @"\}{0}", "{}}"); 

그러나 이것은이 두 가지 검사를하고 있기 때문에 작업을 작업하고 전체 구문을 엉망으로하지 않습니다.

어떻게 처리 할 수 ​​있습니까?

+0

당신은 당신이 알아 낸 일부 샘플 라인을 포함 할 수 너는 무엇을 갖고 싶어? –

+0

문자열'class Abc {...() {}}'가 있다고 가정 해 봅시다. 이제'SendKeys.Send (str)'에 대한 문서에서'{'또는'(')를 이스케이프 된 키 누르기로 읽으려면'{} '로 묶어야합니다. 문자열이 기준에 맞습니까? – Reynevan

답변

1

{} 대신 일부 자리 표시자를 사용하고 해당 자리 표시자를 사용하여 서식이 지정된 결과를 만들 수 있습니다. 그런 다음 마침내 해당 장소 소유자를 {}으로 바꿉니다. 예를 들면 :

string PrepareForSendKeys(string input) 
{ 
    var specialChars = "+^%~(){}"; 
    var c1 = "[BRACEOPEN]"; 
    var c2 = "[BRACECLOSE]"; 
    specialChars.ToList().ForEach(x => 
    { 
     input = input.Replace(x.ToString(), 
      string.Format("{0}{1}{2}", c1, x.ToString(), c2)); 
    }); 
    input = input.Replace(c1, "{"); 
    input = input.Replace(c2, "}"); 
    return input; 
} 

그리고 당신은이 방법을 사용할 수 있습니다

var input = "some string containing +^% ~ () { }"; 
MessageBox.Show(PrepareForSendKeys(input)); 

을 그리고 결과는 다음과 같습니다

some string containing {+} {^} {%} {~} {(} {)} {{} {}} 
+0

답변을 주셔서 감사합니다! 그와 같은 것이 내 마음에 형성되기 시작했는데 어떻게 접근해야할지 모르겠다. 다시 고마워! – Reynevan

+0

환영합니다 :) –

관련 문제