连接一个字符串列表,中间有其他字符串

Concat a List of Strings with additional Strings in between

这是我要搜索的内容。我想连接一个给定的列表,例如:

list = [a,b,c,d]

我想连接这些字符串。在连接之间,我想始终放置相同的字符串,以便结果看起来像:

"Hey a, Hey b, Hey c, Hey d"

这在 swi-Prolog 中可行吗?

您正在寻找隐藏在 atomic_list_concat/3 谓词后面的“intersperse”或“join”函数:

atomic_list_concat/3

atomic_list_concat(+List, +Separator, -Atom)

或者创建 SWI-Prolog“字符串”(应该在处理文本的场景中使用):

atomics_to_string/3

atomics_to_string(+List, +Separator, -String)

您不仅希望“中间有额外的字符串”,因为您还希望在每个字符串的“前面”有一些东西。 更具体地说,您希望每个字符串前面有“Hey”,每个字符串之间有“,”。

我会用 maplist/3 to concat the String "Hey " in front of each of your entries using atom_concat/3.

然后可以使用 atomic_list_concat/3 将所有“Hey X”条目连接成一个字符串。 该谓词还采用一个分隔符,该分隔符应放置在所有条目之间,即在您的情况下为“,”。

List = [a,b,c,d], 
maplist(atom_concat("Hey "), List, HeyList), 
atomic_list_concat(HeyList, ", ", FinalString).

结果:

List = [a, b, c, d],
HeyList = ['Hey a', 'Hey b', 'Hey c', 'Hey d'],
FinalString = 'Hey a, Hey b, Hey c, Hey d'.