【问题标题】:Read string and single out every word in the string in Win-Prolog在 Win-Prolog 中读取字符串并挑出字符串中的每个单词
【发布时间】:2014-08-29 15:08:10
【问题描述】:

我在互联网上花了一整天时间,但我无法在 Win-Prolog 中找到任何内置谓词来区分字符串中的每个单词。

例子:

| ?- read(X).
|: 'this is a string'.
X = 'this is a string'.

是否有任何谓词可以帮助我,挑出字符串中的每个单词? 喜欢

A = this
B = is
C = a
D = string

或列表

A = [This, is, a, string]

有可能吗?

【问题讨论】:

    标签: string list prolog sentence win-prolog


    【解决方案1】:

    在 Win-Prolog 中你可能会使用:

    split_string(String, List):-
      string_chars(String, LChar),
      split_string(List, LWord-LWord, LChar, []).
    
    split_string([Word|TailWords], LWord-[])--> 
         " ", 
         {string_chars(Word, LWord)}, 
         split_string(TailWords, NLWord-NLWord).
    split_string(Words, Head-[Char|LWord]) --> 
         [Char], 
         {[Char] \= " "}, 
         split_string(Words, Head-LWord).
    split_string([Word], LWord-[])--> 
         [], 
         { string_chars(Word, LWord)}.
    

    在 SWI-Prolog 中你可以使用atomic_list_concat(List, ' ', 'this is a string').

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多