X++ のコンテナーの最後の要素で読み取られたキャリッジ ライン リターンを削除するにはどうすればよいですか?
長さ用に別の変数を作成すると、CRLF が含まれているため、文字列は 8 ではなく 9 になります。
ファイルなstrreplace([container element], '\n', '')
ので使ってみましたが、これはうまくいくようです。'\n'
inRecordDelimiter
何か案は?
X++ のコンテナーの最後の要素で読み取られたキャリッジ ライン リターンを削除するにはどうすればよいですか?
長さ用に別の変数を作成すると、CRLF が含まれているため、文字列は 8 ではなく 9 になります。
ファイルなstrreplace([container element], '\n', '')
ので使ってみましたが、これはうまくいくようです。'\n'
inRecordDelimiter
何か案は?
キャリッジ リターン ('\r') とライン フィード ('\n') があります。場合によっては、一方または両方が使用されます。でstrReplace(...)
、文字パターンを別のものに置き換えます。したがって、'\r\n' は '\n\r' とは異なるため、'\n' と '\r' をそれぞれ別々に置き換えるのがおそらく最善です。
strReplace("?!?!?", "?!?", "*")
//returns the text string "*!?".
以下のこのジョブには、実際に作業を行う 2 行があり、他のループは文字列の ASCII 文字値を表示するだけです。文字列を分析し、何が残っているかを確認するには、これを行う必要があります。
static void Job69(Args _args)
{
container con = ['string1', 'str2', 'John Smith' + '\r\n' + '123 south st' + '\r\n' + 'Chicago, IL 60652'];
int i;
;
for (i=1; i<=strlen(conpeek(con, conlen(con))); i++)
{
// This just lets you see ascii codes
info(strfmt("%1 - %2", char2num(conpeek(con, conlen(con)), i), substr(conpeek(con, conlen(con)), i, 1)));
}
// This code does the work
con = conpoke(con, conlen(con), strReplace(conpeek(con, conlen(con)), '\r', ''));
con = conpoke(con, conlen(con), strReplace(conpeek(con, conlen(con)), '\n', ''));
for (i=1; i<=strlen(conpeek(con, conlen(con))); i++)
{
// This just lets you see ascii codes
info(strfmt("%1 - %2", char2num(conpeek(con, conlen(con)), i), substr(conpeek(con, conlen(con)), i, 1)));
}
}
ファイル入力を読んでいるようです。そもそも問題のあるキャラクターを避けてみませんか?
AsciiIo
またはinRecordDelimiterTextIo
を使用して、ファイルの正しい行末区切り文字を受け入れる場合。
逆の問題も参照してください:バイナリとして転送されたテキスト ファイルを読み取る方法