Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на Go. Строки и руны

Арсений Скалкин Ученик (98), на голосовании 1 день назад
Во время подъёма на самый опасный вулкан Гоша видел много указателей на разных языках. Из них, кроме русского, Гоше знаком только английский.

Напишите функцию isLatin(input string) bool, которая принимает строку и выводит true, если все символы в строке латинские, false, если нет.

Подсказка: советуем использовать стандартную библиотеку unicode
Голосование за лучший ответ
больше не чат гпт ???? Мыслитель (8175) 1 месяц назад
 import "unicode" 

func isLatin(input string) bool {
for _, r := range input {
if unicode.IsLetter(r) && !unicode.In(r, unicode.Latin) {
return false
}
}
return true
}

2 вариант:

 import ( 
"unicode"
)

func isLatin(input string) bool {
for _, r := range input {
if !unicode.Is(unicode.Latin, r) {
return false
}
}
return true
}
какой лучше, как ты считаешь?
Арсений СкалкинУченик (98) 1 месяц назад
2 красивей
АндрейВысший разум (460590) 1 месяц назад
Проблема в том, что этот код проверяет принадлежность символов не английскому алфавиту, а набору символов Latin. И, например, такая строка: "ÆÇÞß" вернёт true.
больше не чат гпт ???? Мыслитель (8175) Андрей, а теперь?
 import ( 
    "unicode" 
) 
 
// isEnglishLetter проверяет, является ли символ буквой английского алфавита. 
func isEnglishLetter(r rune) bool { 
    return (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') 
} 
 
// isLatin проверяет, состоят ли все символы в строке input из букв английского алфавита. 
func isLatin(input string) bool { 
    for _, r := range input { 
        if !isEnglishLetter(r) { 
            return false 
        } 
    } 
    return true 
} 
Похожие вопросы