我有一个需要反转的希伯来字符串。
"שורה שלמה בעברית 3/8" וגם נושא חדש בסוגריים (הנושא) וגם מספר בסוגריים (25) וגם נקודה בסוף משפט."
我用这个功能来扭转它
public static string Reverse(string s)
{
char[] charArray = s.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}
输出是:
".טפשמ ףוסב הדוקנ םגו )52( םיירגוסב רפסמ םגו )אשונה( םיירגוסב שדח אשונ םגו \"8/3 תירבעב המלש הרוש"
你可以看到希伯来语中的单词成功反转但数字和()相反。
答案 0 :(得分:1)
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);
}
答案 1 :(得分:-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;
}