2012-10-22 2 views
0

나는 Rot13에 입력 된 텍스트를 인코딩하는 간단한 방법을 찾고 있습니다. 저는 개별 문자와 정수로 단어를 분리 할 수있는 단계에서 벽돌 벽을 치고 있습니다. 그래서 각각을 변경하고 결과를 출력 할 수 있습니다. 간단한 if 문을 사용하여 한 글자로 할 수 있지만 누구나 전체 단어에 대해 도움을 줄 수 있다면 매우 감사 할 것입니다. 당신이 어렵게 될하는 것보다이 방법을 만드는 것 같은간단한 rot13 인코더 vb.net

If kInput = "a" then kOutput = "n" 

감사합니다, 카이

답변

2

사람들이이 문제에 대해 좋은 답변을하고있는 것처럼 보이지만 여기에는 내 시도가 있습니다.

Dim input As String = "This is a Test!! Guvf vf n Grfg!!" 
Dim result As StringBuilder = New StringBuilder() 

For Each ch As Char In input 

    If (Not Char.IsLetter(ch)) Then 
     result.Append(ch) 
     Continue For 
    End If 

    Dim checkIndex As Integer = Asc("a") - (Char.IsUpper(ch) * -32) 
    Dim index As Integer = ((Asc(ch) - checkIndex) + 13) Mod 26 

    result.Append(Chr(index + checkIndex)) 

Next 

Console.WriteLine(result.ToString()) 

편집 : 대문자 확인이 필요하지 않습니다. 이렇게하면 루프 내부의 1 if 문만 사용하여 대소 문자와 특수 문자를 올바르게 처리 할 수 ​​있습니다.

1

는 것 같습니다. 등 개별 단어, 필요, 큰에 확실히 필요가 없습니다/그렇지 차단하면이 브라우저 창에 직접 입력 완전히 안된 것을

Public Function Rot13(ByVal input As String) As String 
    Dim result As Char() = input.ToCharArray() 

    For i As Integer = 0 To result.Length - 1 
     Dim temp As Integer = Asc(result(i)) 
     Select Case temp 
      Case 65 to 77, 97 To 109 'A - M 
       result(i) = Chr(temp + 13) 
      Case 78 to 90, 110 To 122 'N - Z 
       result(i) = Chr(temp - 13) 
     End Select 
    Next i 

    Return New String(result) 
End Function 

참고.

0

인코딩하려면 한 번만 호출하고 디코딩하려면 다시 호출하십시오.

Private Function ROT13_Encode(ByVal Input As String) As String 
Dim chrs As Char() = Input.ToCharArray() 
Dim ReturnString As String = "" 
Dim CharInt As Integer 

For Each Chr As Char In chrs 
    CharInt = Asc(Chr) 
    If CharInt >= 65 And CharInt <= 77 Then 'A-M 
     CharInt += 13 
    ElseIf CharInt >= 78 And CharInt <= 90 Then 'M-Z 
     CharInt -= 13 
    ElseIf CharInt >= 97 And CharInt <= 109 Then 'a-m 
     CharInt += 13 
    ElseIf CharInt >= 110 And CharInt <= 122 Then 'm-z 
     CharInt -= 13 
    End If 
    ReturnString &= ChrW(CharInt) 

Next 

Return ReturnString 
End Function