从字符串中删除数字和最后一个空格(如果存在)
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
【问题讨论】:
我建议分别写两个函数deleteDigits
和deleteLastSpace
。然后把主函数deleteDigitsAndLastSpace
写成两者的组合。
deleteLastSpace
应该相对容易,尤其是如果您首先考虑基本情况。
最后一位数字前面有两个或多个空格怎么办?
@MichaWiedenmann 非常好的地方!我也需要考虑这一点
【参考方案1】:
我猜测(可能是错误的)您只能使用一个函数来完成此操作,您可以使用 Data.List 中的 words
和 unwords
。这样,您可以将整个 String 变成由每个单词组成的 [String],然后删除最后一个,并将其转换回 String em> 像这样:
deleteDigits :: String -> String
deleteDigits = unwords.init.words
我不确定你是否要这样做,所以它会删除 String 中的所有数字,将“My2323 号码是 123”变成“我的号码是”,但我猜这不是案例。
【讨论】:
您似乎要求澄清这个问题。这最适合 cmets。一旦清楚了,就可以写出合适的答案。 @Chris 抱歉,因为我刚开始,但是有一个问题,当发生这样的事情时,我应该做什么?我的意思是我认为我找到了解决他尖锐问题的解决方案,但我发现了一些他没有询问的例外情况。抱歉我的无知,就像我刚才说的那样,我对这一切都很陌生。谢谢! 如果您当前的声誉允许,请发表评论要求澄清。以上是关于从字符串中删除数字和最后一个空格(如果存在)的主要内容,如果未能解决你的问题,请参考以下文章
如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?