#haskell #recursion
#хаскелл #рекурсия
Вопрос:
Функция должна быть направлена на удаление всех цифр и последнего пробела, если таковые имеются, например, если ввод является "My Number is 123"
выводом "My Number is"
, то до сих пор я застрял в том, как удалить последний пробел, в моем решении вывод будет "My Number is "
Как я могу это решить?
deleteDigits :: String -gt; String deleteDigits [] = [] deleteDigits (c:cs) | isDigit(c) = deleteDigits cs | otherwise = c : deleteDigits cs
Комментарии:
1. Я предлагаю написать две функции,
deleteDigits
причемdeleteLastSpace
, отдельно. Затем напишите основную функциюdeleteDigitsAndLastSpace
как композицию из двух.2.
deleteLastSpace
должно быть относительно легко, особенно если вы сначала подумаете о базовых случаях.3. Как насчет двух или более пробелов перед последней цифрой?
4. @MichaWiedenmann очень хорошее место! Мне тоже нужно это обдумать
Ответ №1:
Поскольку я предполагаю (возможно, неправильно), что для этого вы можете использовать только одну функцию, вы можете использовать words
и unwords
из Data.List. Таким образом, вы превратите всю свою строку в [Строку], состоящую из каждого слова, затем удалите последнее и преобразуйте его обратно в строку, подобную этой:
deleteDigits :: String -gt; String deleteDigits = unwords.init.words
Я не уверен, хотите ли вы сделать так, чтобы он удалял все цифры из строки, превращая «Мой номер 2323-123» в «Мой номер есть», но я предполагаю, что это не так.
Комментарии:
1. Похоже, вы просите разъяснений по этому вопросу. Это лучше всего подходит для комментариев. Как только эта ясность будет достигнута, может быть написан подходящий ответ.
2. @Крис Извини, потому что я только начал, но один вопрос, когда происходит что-то подобное, что я должен делать? Я имею в виду, я думаю, что нашел решение для того, о чем он резко спросил, но я нашел некоторые исключения, о которых он не спрашивал. Извините за мое невежество, так как, как я только что сказал, я действительно новичок во всем этом. Спасибо!
3. Оставьте комментарий с просьбой разъяснить, если позволяет ваша текущая репутация.