【发布时间】:2014-03-27 15:29:30
【问题描述】:
我有这段代码可以找到双引号并将这些引号的内部转换为字符串。它设法找到第一个引号,但找不到第二个,所以:“this”将是“this 。我怎么得到它我可以让这个函数找到完整的字符串。
【问题讨论】:
我有这段代码可以找到双引号并将这些引号的内部转换为字符串。它设法找到第一个引号,但找不到第二个,所以:“this”将是“this 。我怎么得到它我可以让这个函数找到完整的字符串。
【问题讨论】:
也许这太明显了:
if (ch = #"\"") then SOME(String(x ^ "\""))
【讨论】:
我不太理解您的代码:您在第一次出现引号之后返回字符串,但该字符串是使用您在它之前找到的字符构建的。而且,你为什么返回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;
并用false初始化quote。
【讨论】: