Ищем строковые операции крайних случаев. Что мне нужно проверить?

StackOverflow https://stackoverflow.com/questions/436736

Вопрос

Я перехожу к последнему этапу моей реализации веревки (более масштабируемая версия String ). Очевидно, я хочу, чтобы все операции по возможности давали тот же результат, что и операции с String .

Сделать это для обычных операций довольно просто, но я беспокоюсь о правильном выполнении чувствительных к культуре операций. Тем более, что я знаю только два языка, и в обоих из них чувствительные к культуре операции ведут себя точно так же, как и обычные операции!

Так есть ли какие-то конкретные вещи, которые я мог бы проверить и получить хоть какую-то уверенность в том, что я все делаю правильно? Я знаю, например, о том, что ß равно SS при игнорировании падежей на немецком языке; о пунктирной и не пунктирной я по-турецки.

Это было полезно?

Решение

Суррогатные пары, если вы планируете их поддерживать, включая недопустимые комбинации (например, только одну часть одного).

Если вы выполняете кодирование и декодирование, убедитесь, что вы сохраняете достаточно состояния, чтобы справиться с заданными произвольно блоками двоичных данных для декодирования, которое может заканчиваться на полпути через символ, а оставшаяся половина следует за следующим символом.

Другие советы

Турецкий тест - это лучшее, что я знаю :)

Вы должны имитировать реализации методов String и использовать основную библиотеку, чтобы сделать это за вас. Очень трудно учитывать каждый возможный аспект каждой культуры. Вместо того, чтобы заново изобретать колесо, используйте отражатель в методах String и смотрите внутренние вызовы. Например, String.Compare использует CultureInfo.CurrentCulture.CompareInfo.Compare для сравнения двух строк в текущей культуре.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top