我不能真正使用Io.read_integer
,因为它会忽略一切,除了
第一个数字。
我可以使用Io.read_line
得到类似15 14 59 86
的东西。
我现在如何将它们拆分为整数?
JavaScript具有split()
,C ++具有stringstream
,类似的东西很理想。
答案 0 :(得分:3)
如果仅使用一个空格,则split
类中有一个{STRING}
方法。 split
方法的参数是{CHARACTER}
而不是{STRING}
。因此,您必须使用' '
而不是" "
。这是一个小功能,可以满足我的要求。
split_to_integer_list(a_string:STRING):ARRAYED_LIST[INTEGER]
-- Convert `a_string', a space separated list of integer
-- into a {LIST} of {INTEGER}
local
l_split:LIST[STRING]
do
l_split := a_string.split (' ')
create Result.make (a_string.count)
across l_split as la_split loop
if la_split.item.is_integer then
Result.extend(la_split.item.to_integer)
end
end
end
答案 1 :(得分:2)
如果要在整数之间允许多个空格,制表符等,可以使用Gobo库中的类{ST_SPLITTER}
。这是一个示例:
local
l_line: STRING
l_splitter: ST_SPLITTER
l_list: DS_LINKED_LIST [INTEGER]
do
io.read_line
l_line := io.last_string
create l_list.make
create l_splitter.make_with_separators (" %T")
across l_splitter.split (l_line) as l_split loop
if l_split.item.is_integer then
l_list.put_last (l_split.item.to_integer)
end
end