String 从字符串中删除空白

String 从字符串中删除空白,string,haskell,whitespace,String,Haskell,Whitespace,我想删除\n之后的空白 例如,username 123\n ugas 423\n peter 23\n asd234将变成username 123\nugas 423\npeter 23\nasd234,我假设您希望同时删除一个或多个空白字符 f [] = [] f ('\n':' ':a) = f ('\n' : a) f (a:b) = a : f b 每行的开头,而不仅仅是第一个空格字符。 另外,我认为您需要删除任何类型的空白字符,例如制表符, 不仅仅是文字空格字符 import Dat

我想删除
\n
之后的空白


例如,
username 123\n ugas 423\n peter 23\n asd234
将变成
username 123\nugas 423\npeter 23\nasd234
,我假设您希望同时删除一个或多个空白字符
f [] = []
f ('\n':' ':a) = f ('\n' : a)
f (a:b) = a : f b
每行的开头,而不仅仅是第一个空格字符。 另外,我认为您需要删除任何类型的空白字符,例如制表符, 不仅仅是文字空格字符

import Data.Char

stripLeadingWhitespace :: String -> String
stripLeadingWhitespace = unlines . map (dropWhile isSpace) . lines

10个问题,0接受?请重新考虑。所有的答案都不可能那么糟糕。这个解决方案只在每条换行后删除一个空格。如果目的是删除每行换行后的所有前导空格(描述中不清楚),那么对第二行的这一小改动就可以了:f(“\n”:“':a)=f(“\n”:a)谢谢提示;我改变了答案。你能解释一下答案吗?JusticeIt接受一个字符列表,每当该列表以序列开头时,它都会将其替换为,然后重新处理该列表。如果列表不是以开头,那么它会去掉第一个字符,并在处理完后追加列表的其余部分。这个解决方案肯定会奏效,但我个人认为下面提到的(unlines.map(dropWhile isSpace).lines one)更为惯用。我理解你的解释。这在haskell中被称为f('\n':'':a)的是什么?不变的模式。递归函数只有两个参数f(a:b)=a:fb,但模式有三个参数。我不明白,我明白你的解释。这在haskell中被称为f('\n':'':a)的是什么?不变的模式。递归函数只有两个参数f(a:b)=a:fb,但模式有三个参数。我不明白。