2012-04-28 4 views
2

asp.net 양식에서 제어 문자를 입력하려고합니다. 예를 들어, 사용자가 텍스트 상자에 \ t를 입력 할 수 있고 \ t (\ t가 아닌 경우)를 입력해야합니다 (공간을 함께 넣으면 그 중 하나가 이스케이프 처리됩니다). 이걸 가지고 갈 수있는 가장 좋은 방법은 뭔가요? 나는 그것을 잠시 동안 계속 꼼짝 않고 바라보고 있었고 그 대답은 나에게 뛰어 오르는 것이 아니다. 감사.asp.net에서 t 입력하는 방법

업데이트 :

고마워, 난 그냥 내 자신을 대답했습니다.

난 그냥 정규식에서 발견 한 정적 명령 Unescape 방법, 내 웹 응용 프로그램에서 내가 지금 뭐하는 거지 있도록 :

(TB가있는 asp.net 텍스트 상자)

 var inputText = tb.Text; 
     if (inputText.Length == 2) 
     { 
      var escaped = System.Text.RegularExpressions.Regex.Unescape(inputText); 
      if (escaped.Length == 1) 
      { 
       var character = escaped.ToCharArray()[0]; 
       if (char.IsControl(character)) 
       { 
        inputText = character.ToString(); 
       } 
      } 
     } 
+1

내가 대답 할 수없는 나도 아직 그래서하지만 대답을 찾았습니다. 그것의 정규식은 Unescape 정적 메서드. var 이스케이프 = System.Text.RegularExpressions.Regex.Unescape (inputText); –

답변

0

고마워,하지만 난 그냥 대답했습니다 : 그것은 정말있을 경우, 사용자가 서버에 텍스트를 제출 한 후 검색을하고 그것을 대체하기 위해 시도 할 수 말했다

자기.

난 그냥 정적 명령 Unescape 방법, 내 웹 응용 프로그램에서, 그래서 내가 지금 뭐하는 거지 정규식에서 발견했습니다

(TB는 asp.net의 T에게 어디

 var inputText = tb.Text; 
     if (inputText.Length == 2) 
     { 
      var escaped = System.Text.RegularExpressions.Regex.Unescape(inputText); 
      if (escaped.Length == 1) 
      { 
       var character = escaped.ToCharArray()[0]; 
       if (char.IsControl(character)) 
       { 
        inputText = character.ToString(); 
       } 
      } 
     } 
0

난 당신을 생각 '\t'과 같은 이스케이프 처리 된 문자를 구문 분석하고 싶습니다. 그래서이 도우미 메서드를 사용하는 경우 :주의해야 할

public static char ParseChar(string ch) 
{ 
    char result; 

    if (ch[0] != '\\') 
     result = ch[0]; 
    else 
    { 
     if (ch.Length == 1) 
      throw new ArgumentException("Invalid escape sequence '" + ch + "'"); 

     switch (ch[1]) 
     { 
      case '\'': result = '\''; break; 
      case '"': result = '"'; break; 
      case '\\': result = '\\'; break; 
      case '0': result = '\0'; break; 
      case 'a': result = '\a'; break; 
      case 'b': result = '\b'; break; 
      case 'f': result = '\f'; break; 
      case 'n': result = '\n'; break; 
      case 't': result = '\t'; break; 
      case 'v': result = '\v'; break; 

      default: 
       throw new ArgumentException(
        "Invalid escape sequence '" + ch + "'"); 
     } 
    } 

    return result; 
} 
0

한 가지는 당신이 디버거를 통해 진정한 \t보고있는 경우 시각적으로도, .NET 자동으로 당신을 위해 \\로 인코딩되며, 값을 볼 수 있다는 것입니다 거기에는 없지만.

var newString = stringWithDoubleSlash.Replace("\\\\", "\\"); 
// We aren't really looking for 4 slashes, but it appears that way since two of them are escaped 
관련 문제