я следующий код:.net микро (μ) греческая буква прописная вопрос
string firstMicro = "aa \u00b5 bb";
string secondMicro = "aa \u03bc bb";
Assert.IsFalse(firstMicro == secondMicro);
string upperFirstMicro = firstMicro.ToUpper();
string upperSecondMicro = secondMicro.ToUpper();
Assert.IsFalse(upperFirstMicro == upperSecondMicro);
В моем случае, первое испытание проходит (очевидно, обе строки различны), а во втором случае, тест так как оба текста идентичны ($ AA M BB). Я признаю, что в одном из случаев я должен был использовать CultureInfo, но, по крайней мере, в первом случае (микро-знак из кода ASCII) должен был остаться тем же ... Может ли кто-нибудь помочь мне понять, почему это происходит?
Aparently, есть другой поток здесь - How to correctly uppercase Greek words in .NET?, но нет очевидного ответа ...
Спасибо. D.
'ToUpper' использует текущую' CultureInfo' (если не передавать информацию о культуре). Какова ваша 'текущая' CultureInfo'? – Aliostad
[Что является основанием для второго теста?] (Http://stackoverflow.com/a/9617044/7724) Что бы вы ожидали, что на самом деле будут иметься две строки верхнего строфа? Ожидаете ли вы, что U00b5 останется неизменным, так как это «не письмо»? Кроме того, здесь не задействован ASCII. – bzlm
И почему вы ** не ** использовали 'CultureInfo'? Если вы знаете, что это правильно делать? – Oded