从字符串中删除数字和最后一个空格(如果存在)

Posted

技术标签:

【中文标题】从字符串中删除数字和最后一个空格(如果存在)【英文标题】:Remove digits and the last space if exist from a string 【发布时间】:2022-01-14 04:46:40 【问题描述】:

该函数旨在删除所有数字和最后一个空格(如果存在),例如,如果输入是 "My Number is 123" 输出应该是 "My Number is" 到目前为止,我一直不知道如何删除最后一个空格,在我的解决方案中输出将是 "My Number is " 我该如何解决这个问题?

deleteDigits :: String -> String
deleteDigits [] = []
deleteDigits (c:cs) | isDigit(c) = deleteDigits cs
                    | otherwise = c : deleteDigits cs

【问题讨论】:

我建议分别写两个函数deleteDigitsdeleteLastSpace。然后把主函数deleteDigitsAndLastSpace写成两者的组合。 deleteLastSpace 应该相对容易,尤其是如果您首先考虑基本情况。 最后一位数字前面有两个或多个空格怎么办? @MichaWiedenmann 非常好的地方!我也需要考虑这一点 【参考方案1】:

我猜测(可能是错误的)您只能使用一个函数来完成此操作,您可以使用 Data.List 中的 wordsunwords。这样,您可以将整个 String 变成由每个单词组成的 [String],然后删除最后一个,并将其转换回 String em> 像这样:

deleteDigits :: String -> String
deleteDigits = unwords.init.words

我不确定你是否要这样做,所以它会删除 String 中的所有数字,将“My2323 号码是 123”变成“我的号码是”,但我猜这不是案例。

【讨论】:

您似乎要求澄清这个问题。这最适合 cmets。一旦清楚了,就可以写出合适的答案。 @Chris 抱歉,因为我刚开始,但是有一个问题,当发生这样的事情时,我应该做什么?我的意思是我认为我找到了解决他尖锐问题的解决方案,但我发现了一些他没有询问的例外情况。抱歉我的无知,就像我刚才说的那样,我对这一切都很陌生。谢谢! 如果您当前的声誉允许,请发表评论要求澄清。

以上是关于从字符串中删除数字和最后一个空格(如果存在)的主要内容,如果未能解决你的问题,请参考以下文章

如果存在,则从字符串中删除第一个和最后一个点

从字符串中删除第一个数字

从字符串和数字中删除逗号

如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?

除了文本,如何从文本中删除数字、标点、空格和特殊字符? [复制]

一道Python练习题引发的,一个知识点的探讨:删除列表中特定元素的几种方法