SML プログラムを作成していて、エスケープ シーケンスを含む文字列をエスケープ シーケンスを含まない文字列に変換しようとしています。
私はこれを試しましたが、うまくいかないようです(単に印刷します"Hello "
)
fun test x =
let val esc = "Hello \\ Bob \n Newman"
val fixed = String.fromString esc
in
print (valOf(fixed))
end
関数を使用する必要があるかもしれないと思いますがString.scan
、その仕組みが正確にはわかりません。
関数のシグネチャは
scan : (char, 'a) StringCvt.reader
-> (string, 'a) StringCvt.reader
だから私はいくつかの質問があります:
1) このスキャン署名が何を言っているのか正確に説明できますか...関数はどのような引数を取り、何を返しますか?
2) これは私が使用すべき機能ですか?
3) この機能を使用する際のガイダンスを教えてください。ありがとう
編集:わかりました、上記の例は単純化しましたが、単純化しすぎた可能性があります...これがまさに私がやっていることです。と呼ばれるグローバル文字列とstr
、文字/文字列の入力ストリームがあります...入力ストリームを読み取るときに、読み取ったstr
ばかりの文字と連結します。すべての文字を読み取った後、戻りたいのですstr
が、すべてのエスケープ シーケンスが変換されています。