Ответ 1
Если конкретный символ классифицируется как символ пробела или не должен зависеть от используемого набора символов. Тем не менее, не исключено, что язык программирования может сделать свое собственное определение того, что представляет собой пробел.
В большинстве современных языков используется набор символов Unicode, который имеет определение для символов разделителя пробелов. Любой символ категории Zs
является разделителем пространства.
Здесь вы можете увидеть полный список. Кроме того, вы можете grep для ;Zs;
в официальной Unicode Character Database, чтобы увидеть эти символы. Обратите внимание, что количество символов в этой категории может увеличиваться по мере появления новых версий Unicode, поэтому я не буду говорить, сколько таких символов существует, и даже не пытайтесь их перечислить.
Помимо категории Zs Unicode, Unicode также определяет свойства символа. Среди свойств, определенных Unicode, является свойство Whitespace. Начиная с Unicode 7.0, символы с этим свойством включают в себя все символы категории Zs плюс несколько управляющих символов (включая U + 0009, U + 000A, U + 000B, U + 000C, U + 000D и U + 0085). Вы можете найти все символы со свойством whitespace на Unicode.org здесь.
Теперь многие языки, даже современные, имеют специальные символы для регулярных выражений, таких как \s
или [:space:]
, но будьте осторожны, они относятся только к определенным символам из набора ASCII; обычно они ограничены
- ПРОСТРАНСТВО (код 32, U + 0020)
- TAB (код 9, U + 0009)
- LINE FEED (код 10, U + 000A)
- LINE TABULATION (код 11, U + 000B)
- FORM FEED (код 12, U + 000C)
- ВОЗВРАТ ПЕРЕВОЗКИ (код 13, U + 000D)
Теперь этот список интересен тем, что содержит не только разделители пробелов (Zs), но также и из категории "Управление, другое" (Cc). Это то, что обычно означает язык программирования, когда он использует термин "пробелы".
Поэтому, вероятно, лучший способ ответить на ваш вопрос для "полного списка" пробельных символов - сказать "это зависит от того, что вы имеете в виду". Если вы имеете в виду "классические пробелы", это, вероятно, шесть символов, перечисленных выше. Если вы хотите что-то более "современное", то это объединение этих шести со всеми персонажами из категории Юникод Zs. Опять же, вам, возможно, придется искать и другие блоки (например, U + 1361, как упоминалось в комментарии к вашему вопросу Джерри Коффина). Это также зависит от того, что вы намерены делать с этими пробелами.
Теперь последнее: Unicode не имеет всех персонажей в мире; он продолжает расти. Возможно, что когда-нибудь будут добавлены новые пробелы. На данный момент категория Zs + классики - ваш лучший выбор.