gpt4 book ai didi

prolog - 替换序言中的空格

转载 作者:行者123 更新时间:2023-12-01 09:24:52 25 4
gpt4 key购买 nike

是否可以在 prolog 中用某个给定字符替换字符串的所有空格?例子-如果我有一个变量 How are you today? 并且我想要 How_are_you_today?

最佳答案

对于原子

有很多方法可以做到这一点。我发现以下特别简单,使用 atomic_list_concat/3 :

?- atomic_list_concat(Words, ' ', 'How are you today?'), atomic_list_concat(Words, '_', Result).
Words = ['How', are, you, 'today?'],
Result = 'How_are_you_today?'.

对于 SWI 字符串

以上也可以用 SWI 字符串来完成。不幸的是,没有 string_list_concat/3 会使转换变得微不足道。 split_string/4用途广泛,但只完成了一半的工作:

?- split_string("How are you today?", " ", "", Words).
Words = ["How", "are", "you", "today?"].

我们可以自己定义 string_list_concat/3 (第一次尝试定义它如下所示)或者我们需要稍微不同的方法,例如重复 string_concat/3 .

string_list_concat(Strings, Separator, String):-
var(String), !,
maplist(atom_string, [Separator0|Atoms], [Separator|Strings]),
atomic_list_concat(Atoms, Separator0, Atom),
atom_string(Atom, String).
string_list_concat(Strings, Separator, String):-
maplist(atom_string, [Separator0,Atom], [Separator,String]),
atomic_list_concat(Atoms, Separator0, Atom),
maplist(atom_string, Atoms, Strings).

然后:

?- string_list_concat(Words, " ", "How are you today?"), string_list_concat(Words, "_", Result).
Words = ["How", "are", "you", "today?"],
Result = "How_are_you_today?".

关于prolog - 替换序言中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com