在SWI-Prolog中如何实现带固定前缀的字符串列表拼接
SWI-Prolog实现带前缀的列表拼接功能
可行性说明
完全可以实现,SWI-Prolog内置了成熟的列表遍历、字符串拼接谓词,不需要额外安装第三方库。
实现思路
- 遍历原始列表,为每个元素拼接指定的固定前缀,生成新的预处理列表
- 用
,作为分隔符,将预处理列表的所有元素拼接为单个字符串 - 按需为最终结果包裹双引号
具体实现代码
% 辅助谓词:为单个元素拼接前缀 add_prefix(Prefix, Element, PrefixedElement) :- string_concat(Prefix, Element, PrefixedElement). % 主谓词:输入原始列表、固定前缀,输出最终拼接结果 prefix_join(InputList, Prefix, FinalResult) :- % 给所有元素批量加前缀 maplist(add_prefix(Prefix), InputList, PrefixedList), % 用逗号+空格拼接所有预处理后的元素 atomic_list_concat(PrefixedList, ', ', JoinedStr), % 给结果加外层双引号,不需要可删除这行,直接返回JoinedStr即可 format(string(FinalResult), '"~w"', [JoinedStr]).
测试示例
运行查询:
?- prefix_join([a,b,c,d], "Hey ", Res).
返回结果:
Res = "\"Hey a, Hey b, Hey c, Hey d\""
完全符合需求。
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

