2014-11-18 2 views
1

나는 뒤집을 필요가있는 히브리 문자열을 가지고 있습니다. 당신이 성공적으로 반전 히브리어의 단어하지만 숫자와를 볼 수히브리어 문자와 숫자가 포함 된 문자열을 뒤집는 방법은 무엇입니까?

".טפשמ ףוסב הדוקנ םגו)52(םיירגוסב רפסמ םגו)אשונה(םיירגוסב שדח אשונ םגו \"8/3 תירבעב המלש הרוש" 

()은 다음과 같습니다

"שורה שלמה בעברית 3/8" וגם נושא חדש בסוגריים (הנושא) וגם מספר בסוגריים (25) וגם נקודה בסוף משפט." 

내가 출력이

public static string Reverse(string s) 
{ 
    char[] charArray = s.ToCharArray(); 
    Array.Reverse(charArray); 
    return new string(charArray); 
} 

그것을 반전이 기능을 사용 반대로.

+4

출력은 해당 기능에서 기대 정확히이다. 어떤 생산물을 생산하고 싶습니까? UI 구성 요소에서 RTL 지원에 대해 읽으려고 했습니까? 사실, 문자열을 뒤집기를 원하지 않으므로 히브리어 단어를 오른쪽에서 왼쪽 방향으로 표시하고 싶습니다! – Alexander

+0

출력은 레거시 응용 프로그램을위한 것입니다 – eyalb

+0

오래 전부터 [Ctrl-CC] (http://www.evrit.co.il/cc/cc-main.htm)라는 프로그램이 있었지만 웹 페이지에서 역 헤브라이어를 복사 할 수 있습니다 (저는 90 년대 중반을 말하고 있습니다). 나는 그것을 AS-400 터미널 (역전 된)에서 히브리어로 복사하여 붙여 넣었다. Ctrl-CC에 대한 C 소스 코드는 링크에서 사용 가능합니다. "쉬운"해결책이 없다고 생각합니다. "특별한"경우 (괄호, 따옴표)를 직접 처리해야합니다. –

답변

-1
public static string Reverse(string t) 
    { 
     char[] charArray = t.ToCharArray(); 
     string a = ""; 
     int last = 0; 
     for (int i = 0; i <= charArray.Length-1; i++) 
     { 

      if (!IsHebrew(charArray[i])) 
      { 
       List<char> temp = new List<char>(); 

       for (; last < i; last++) 
       { 
        int k = 0; 
        temp.Insert(0,charArray[last]); 
       } 

       foreach(char g in temp) 
       { 
        a += g.ToString(); 
       } 
       a += charArray[i]; 
       last += 1; 
      } 
     } 

     return a; 
    } 
    private const char FirstHebChar = (char)1488; //א 
    private const char LastHebChar = (char)1514; //ת 
    private static bool IsHebrew(char c) 
    { 
     return c >= FirstHebChar && c <= LastHebChar; 
    } 
+0

lol , 아니요 ........ – leppie

+0

권자, 이제 더 낫다 –

+0

왜 새 목록을 만든 직후 Clear()를 호출합니까? 또한 마지막 + = 1은 ++ 마지막 또는 마지막 ++로 쓸 수 있습니다 – reggaeguitar

0
static public string ReverseOnlyHebrew(string str) 
    { 
     string[] arrSplit; 
     if (str != null && str != "") 
     { 
      arrSplit = Regex.Split(str, "()|([א-ת]+)"); 
      str = ""; 
      int arrlenth = arrSplit.Length - 1; 
      for (int i = arrlenth; i >= 0; i--) 
      { 
       if (arrSplit[i] == " ") 
       { 
        str += " "; 
       } 
       else 
       { 
        if (arrSplit[i] != "") 
        { 
         int outInt; 
         if (int.TryParse(arrSplit[i], out outInt)) 
         { 
          str += Convert.ToInt32(arrSplit[i]); 
         } 
         else 
         { 
          arrSplit[i] = arrSplit[i].Trim(); 
          byte[] codes = System.Text.ASCIIEncoding.Default.GetBytes(arrSplit[i].ToCharArray(), 0, 1); 
          if (codes[0] > 47 && codes[0] < 58 || codes[0] > 64 && codes[0] < 91 || codes[0] > 96 && codes[0] < 123)//EDIT 3.1 reverse just hebrew words        
          { 
           str += arrSplit[i].Trim(); 
          } 
          else 
          { 
           str += Reverse(arrSplit[i]); 
          } 
         } 
        } 
       } 
      } 
     } 
     return str; 
    } 
     static public string Reverse(string str) 
     { 
      char[] strArray = str.ToCharArray(); 
      Array.Reverse(strArray); 
      return new string(strArray); 
     } 
관련 문제