gannicus.ЗАПИСКИ ПРОГРАММИСТА
Сайты · 2017-03-04

Имена для тестовых данных: Рус–Eng, регистр и дубликаты

Небольшой синтетический набор для формы, понятная латинская подпись и проверка того, что подготовка данных не уничтожила различия.

В этой записи
  1. Для чего нужен небольшой список
  2. Для email используйте зарезервированный пример
  3. Нормализация без потери оригинала
  4. Что проверить после обработки

Для чего нужен небольшой список

Когда верстаешь форму или таблицу пользователей, нужны несколько имён разной длины: короткое, составное, с дефисом, с буквой «ё». На настоящем интерфейсе сразу видно, не обрезается ли текст и не путаются ли подпись, имя аккаунта и адрес электронной почты.

Файл первоначальной подборки имён недоступен. Таблица ниже — отдельный учебный набор, а не копия того файла. Все сочетания придуманы для макета; они не описывают конкретных людей и не предназначены для регистрации чужих аккаунтов.

Синтетические данные для проверки интерфейса
Отображаемое имяЛатинская подпись для макетаЧто проверяем
Анна ПримероваAnna PrimerovaОбычная длина
Лев ТестовLev TestovКороткое имя
Семён ОбразцовSemyon Obraztsov«Ё» и различие написаний
Анна-Мария МакетоваAnna-Maria MaketovaДефис и перенос строки
Александра ДлиннофамильцеваAleksandra DlinnofamiltsevaДлинная подпись

Эта латиница — выбранное написание учебного примера, не паспортная транслитерация и не единый стандарт. Для документов, билетов и учётной записи важны требования конкретной системы и данные владельца; автоматическая замена букв по собственной таблице не подтверждает совпадение с документом.

Для email используйте зарезервированный пример

Для макета подойдёт anna.primerova@example.com. Домен example.com зарезервирован для примеров. Это не повод отправлять туда письма: в тестовой среде рассылку нужно отключить или направить в специальный тестовый приёмник. Не составляйте случайные адреса на чужих реальных доменах.

Нормализация без потери оригинала

Храните исходную отображаемую строку отдельно от ключа сравнения. Для небольшого локального списка можно убрать повторные пробелы, привести Unicode к одной форме и сравнить без регистра:

const names = [" Анна Примерова ", "анна   примерова", "Семён Образцов"];
const key = name => name.normalize("NFC").trim()
  .replace(/\s+/g, " ").toLocaleLowerCase("ru");
const seen = new Set();
const unique = names.filter(name => {
  const normalized = key(name);
  if (seen.has(normalized)) return false;
  seen.add(normalized);
  return true;
});
console.log(unique);

Пример работает со списком строк в памяти и никуда его не отправляет. Он объединяет только совпадения выбранного ключа. Два разных человека могут иметь одинаковое имя, поэтому такую дедупликацию нельзя бездумно переносить на реальную базу пользователей. «Е» и «ё», дефис и отсутствие дефиса здесь намеренно не считаются одним и тем же.

Что проверить после обработки

  • Начальные и конечные пробелы убраны только там, где это задумано.
  • Имя с дефисом осталось читаемым и не превратилось в два отдельных поля.
  • «Семен» и «Семён» не склеились из-за неоговорённого правила.
  • Отображаемое имя не заменено техническим ключом в нижнем регистре.
  • Повторная загрузка тестовых данных не создаёт настоящую рассылку.

Для смены регистра в текстовом редакторе лучше работать с копией выделенного фрагмента: массовое преобразование не должно уничтожать исходное написание. Для поиска подозрительных строк на сайте есть отдельный локальный инструмент.

Источники: зарезервированные имена для примеров; Unicode-нормализация строк JavaScript.