我有这个代码,它找到双引号并将这些引号的内部转换为字符串。它设法找到第一个引号但却找不到第二个引号:"这个"会是"这个。我如何得到它我可以使用此函数来查找完整的字符串。
答案 0 :(得分:1)
也许这太明显了:
if (ch = #"\"") then SOME(String(x ^ "\""))
答案 1 :(得分:1)
我真的不明白你的代码:你在第一次出现引号后返回字符串,但是这个字符串是用你在它之前找到的字符构建的。此外,为什么要返回SOME(Error)
而不是NONE
?
您需要使用布尔变量来了解何时看到第一个引号,并在找到第二个引号时停止。所以我会写这样的东西:
fun parseString x inStr quote =
case (TextIO.input1 inStr, quote) of
(NONE, _) => NONE
| (SOME #"\"", true) => SOME x
| (SOME #"\"", false) => parseString x inStr true
| (SOME ch, true) => parseString (x ^ (String.str ch)) inStr quote
| (SOME _ , false) => parseString x inStr quote;
并使用quote
初始化false
。