Удалите цифры и последний пробел, если они существуют, из строки

#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. Оставьте комментарий с просьбой разъяснить, если позволяет ваша текущая репутация.