簡體   English   中英

如何反轉包含希伯來字母和數字的字符串?

[英]How to reverse a string that contains Hebrew letters and numbers?

我有一個希伯來語字符串,我需要扭轉。

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

我用這個功能來扭轉它

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

輸出為:

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

如您所見,希伯來語中的單詞可以成功反轉,但是數字和()可以反轉。

 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);
        }
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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM