Мы же не знаем обстоятельств использования этого кода. Вы предположили, что это недоформулированная задача от какого-то заказчика.
Да упаси Диэдр заказчика — с платформы по решению учебных программистских задач и автоматического тестирования их у них на сервере с выдачей галочек участникам, которые решили задачу. Но на такой платформе обязательно будут условия, хоть бы даже коряво сформулированные, но будут. Учебная программистская задача в чистом виде — это нечто с пред- и постусловиями, ибо мы не можем решать задачу для совершенно произвольных условий — времени не хватит на написание и никого это не научит чему-то полезному.
Если это требования реального заказчика, вопрос вообще не на форум — стоило думать прежде чем соглашаться с заказом, тут разве что посочувствовать, но не делить ответственность, потому что деление ответственности будет мнимое — она всё равно останется на реализующем заказ вся, а он может решить, что часть её вытекла. Он сможет снять с себя часть ответственности только общением с клиентом.
Я предположил, что код используется для себя и автора действительно беспокоит только пробел и дефис.
Тогда опять же он мог бы сначала точнее поставить задачу, потому что ему
скорее всего нужно всё-таки конкретное решение, а не произвольно домысленное, так как этот код будет вставлен куда-то и работать в какой-то конкретной среде, диктующей пред- и постусловия.
Я домыслил ещё несколько знаков препинания.
Это безусловно очень полезное занятие. Лучше бы домыслили
категории Punctuation, Symbol и Separator из уникода тогда, вместо такого списка. Стандарту сто лет, во входных данных может встретиться что угодно — давайте его игнорировать и думать по-старинке в терминах ASCII и кодовых страниц! (Точнее, одной кодовой страницы, Windows-1251, кому нужны другие?..)
После уточнения задачи можно добавить дополнительные разделители или развернуть задачу и специфицировать буквы, цифры и апострофы, а всё остальное считать пробелами между словами.
Да, может быть полезнее выделять «слова» чем их разделители, но ещё лучше может быть выделять точки начала и конца слов, и тут уже лучше вооружиться регулярными выражениями как советует
Geen. Но не до специализации задачи. Потому что будет переписываться десять раз после каждого «а ещё надо чтобы было так и не было эдак». Это не нужно никому хотя бы потому что создаёт впечатление, что это близко к оптимальной моде коммуникации.
-- Вс мар 21, 2021 16:45:06 --EiktyrnirЕсли они совсем-совсем не пишут требования к входным и выходным строкам и их точной связи, постарайтесь (если возможно) с ними не иметь дела — неужели оно стоит угадайки?