我正在尝试将字符串转换为字符列表列表,我有以下代码:
fun linelist file =
let
val instr = TextIO.openIn file
val str = TextIO.inputAll instr
in
String.tokens (fn x => x = #"\n")str
before
TextIO.closeIn instr
end;
fun getsudo file = map explode (linelist file);
我需要使用以下
转换文件(sudo.txt)53**7****\n6**195***\n*98****6*\n8***6***3\n4**8*3**1\n7***2***6\n*6****28*\n***419**5\n****8**79\n
到
[[#"5",#"3",#"*",#"*",#"7",#"*",#"*",#"*",#"*",],
[#"6",#"*",#"*",#"1",#"9",#"5",#"*",#"*",#"*",],
[#"*",#"9",#"8",#"*",#"*",#"*",#"*",#"6",#"*",],
[#"8",#"*",#"*",#"*",#"6",#"*",#"*",#"*",#"3",],
[#"4",#"*",#"*",#"8",#"*",#"3",#"*",#"*",#"1",],
[#"7",#"*",#"*",#"*",#"2",#"*",#"*",#"*",#"6",],
[#"*",#"6",#"*",#"*",#"*",#"*",#"2",#"8",#"*",],
[#"*",#"*",#"*",#"4",#"1",#"9",#"*",#"*",#"5",],
[#"*",#"*",#"*",#"*",#"8",#"*",#"*",#"7",#"9",]]
但是我得到了这个
[[#"5",#"3",#"*",#"*",#"7",#"*",#"*",#"*",#"*",#"\\",#"n",#"6",
#"*",#"*",#"1",#"9",#"5",#"*",#"*",#"*",#"\\",#"n",#"*",#"9",
#"8",#"*",#"*",#"*",#"*",#"6",#"*",#"\\",#"n"#"8",#"*",#"*",
#"*",#"6",#"*",#"*",#"*",#"3",#"\\",#"n",#"4",#"*",#"*",#"8",
#"*",#"3",#"*",#"*",#"1",#"\\",#"n",#"7",#"*",#"*",#"*",#"2",
#"*",#"*",#"*",#"6",#"\\",#"n",#"*",#"6",#"*",#"*",#"*",#"*",
#"2",#"8",#"*",#"\\",#"n",#"*",#"*",#"*",#"4",#"1",#"9",#"*",
#"*",#"5",#"\\",#"n",#"*",#"*",#"*",#"*",#"8",#"*",#"*",#"7",
#"9",#"\\",#"n"]]
我该如何解决?
答案 0 :(得分:2)
你可以使用explode()。这会将字符串列表转换为字符列表,这是您要执行的操作。 call explode(' string')转换
答案 1 :(得分:1)
您需要找到或编写lines
功能。它需要一个字符串并根据Newline字符出现的位置将其分解为字符串数组。
在haskell中称为lines
。除此之外;而不是inutAll
,你必须逐行输入,同时累积一个字符串数组。
此外,您输入的文件似乎具有实际的'\'\ n'字符而不是换行符。
输入应为:
53**7****
6**195***
*98****6*
8***6***3
4**8*3**1
7***2***6
*6****28*
***419**5
****8**79
lines.sml:
open Char;
open String;
open List;
fun linelist file =
let val instr = TextIO.openIn file
val str = TextIO.inputAll instr
in tokens isSpace str
before
TextIO.closeIn instr
end;
fun getsudo file = map explode (linelist file);
fun main args =
getsudo "sudo.txt";
会议:
- main 1;
val it =
[[#"5",#"3",#"*",#"*",#"7",#"*",#"*",#"*",#"*"],
[#"6",#"*",#"*",#"1",#"9",#"5",#"*",#"*",#"*"],
[#"*",#"9",#"8",#"*",#"*",#"*",#"*",#"6",#"*"],
[#"8",#"*",#"*",#"*",#"6",#"*",#"*",#"*",#"3"],
[#"4",#"*",#"*",#"8",#"*",#"3",#"*",#"*",#"1"],
[#"7",#"*",#"*",#"*",#"2",#"*",#"*",#"*",#"6"],
[#"*",#"6",#"*",#"*",#"*",#"*",#"2",#"8",#"*"],
[#"*",#"*",#"*",#"4",#"1",#"9",#"*",#"*",#"5"],
[#"*",#"*",#"*",#"*",#"8",#"*",#"*",#"7",#"9"]] : char list list
-