Следует помнить, что не следует делать допущения, которые в действительности недействительны.
Довольно распространенное предположение, что неверно то, что (str.ToUpper().ToLower() == str)
для любых string str
. Более тонкое предположение состоит в том, что понятие «верхнего» и «нижнего» случая даже имеет смысл для любого данного языка.
Еще одно частое проблемное предположение состоит в том, что во входном файле всегда присутствует нулевой символ . Это неправильно - даже если установить такие вещи, как суррогатные пары в стороне, есть также сочетание символов. Вы либо должны нормализовать свои строки (и даже это не на 100% безупречно), либо просто не иметь дело с отдельными char
с.
Если вы хотите иметь дело с более чем простым текстовым вводом, отображаемым дословно - то есть полной, правильной локализацией - вам также нужно правильно обрабатывать форматы чисел, даты, валюты и т. Д .; и, например, не предполагайте, что десятичный разделитель является точкой.
Мой лучший общий совет - просто пойти и прочитать Michael Kaplan's blog, местный гуру Microsoft по локализации и связанным с этим вопросам. Ищите категории (теги), такие как «Collation/Casing», «Encoding/Codepages» и «Int'l Programming». Там есть лот вещей, и большинство из них либо напрямую связано с вашим вопросом, либо интересно, или и то, и другое.Если после прочтения нескольких своих сообщений в блоге вы начинаете думать, что, возможно, найм специалиста по локализации, чтобы указать на потенциальные неочевидные проблемы в этой области, это хорошая идея, тогда вы, вероятно, правы :)
Хорошая точка. Это следующий этап, когда эта проблема будет завершена. – 2009-08-13 08:38:01