You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中如何处理字符串内双引号、换行符并拼接字符串列表

Haskell allStrings 函数实现

核心逻辑

你需要先对每个字符串中的特殊字符做转义处理,再用空格拼接所有处理后的字符串即可实现需求:

  • 遇到双引号"时替换为连续两个双引号""
  • 换行符可根据你的实际需要选择保留、替换为空格或转义为可见的\n,以下实现默认保留原始换行符

完整代码

import Data.List (intercalate)

-- 单个特殊字符转换逻辑
escapeChar :: Char -> String
escapeChar '"' = "\"\""    -- 双引号替换为两个连续双引号
escapeChar '\n' = "\n"     -- 保留换行符,如需替换为空格可改为 " ",如需转义为可见\n可改为 "\\n"
escapeChar c = [c]         -- 其余字符原样返回

-- 处理单个字符串的所有字符
escapeString :: String -> String
escapeString = concatMap escapeChar

-- 主函数:先处理每个元素,再用空格拼接
allStrings :: [String] -> String
allStrings = intercalate " " . map escapeString

如果你不想引入Data.List依赖,也可以手动实现拼接逻辑,替换主函数为:

allStrings :: [String] -> String
allStrings [] = ""
allStrings (first:rest) = foldl (\acc s -> acc ++ " " ++ escapeString s) (escapeString first) rest

效果测试

输入测试用例:
allStrings ["Sun\"shine\"", "Rain"]
输出结果:
"Sun\"\"shine\"\" Rain",和你预期的转换效果完全一致。


内容的提问来源于stack exchange,提问作者program.exe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:24:02