0
我需要将西里尔字符替换为音译拉丁字符。不幸的是,我的解决方案总是返回-1时,搜索char位置。
这是怎么回事?
C#替换西里尔字符失败
StringBuilder sb = new StringBuilder();
var domain = ConfigurationManager.AppSettings["Domain"];
catname = catname.ToLower();
var englishchars = new string[] { "a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "y", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "c", "ch", "sh", "shch", "i", "e", "yu", "ya", "_" };
var slavicchars = new string[] { "a", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "э", "ю", "я", " " };
foreach (char x in catname)
{
var position_s = Array.IndexOf(slavicchars, x);
var char_e = Array.IndexOf(englishchars, position_s);
sb.Append(englishchars[char_e]);
}
return String.Format("{0}/katalog/kategorii/{1}", domain, sb.ToString());
'position_s'包含数字索引,即数组中元素的**位置**。你看到你的代码在做什么吗? ;-) – elgonzo
@elgonzo,是的,你是对的,但-1我到了这里:var position_s = Array.IndexOf(slavicchars,x); –
呵呵,失明中风我...... :)'x'是char类型的,但是你的数组的类型是string []。让slavicchars成为一个char []'数组。 – elgonzo