Microsoft Flow で文字列中の改行を置換する

Microsoft Flow の文字列を置換するには replace 関数を使うのだが、replace 関数で改行文字(\n)を直接は扱えない。このため、改行を事前に文字列の変数にしておくとよい。

まずは、以下のように改行だけを入力した変数を作成する。

f:id:mk_55:20190911214208p:plain
LFの変数化

そのあと、以下のような式を使うと、改行を置換できる。 ※この場合は空文字で置換しているので、改行を除去した、'置換したい文字列'が出力になる。

replace("置換したい\n 文字列", variables("LF"), "");

上記にたどりつくまで

以下は備忘録。

エスケープすればいけるだろ、とやってみるが上手くいかない

#一般的なエスケープ
replace('置換したい\n 文字列' ,'\n', '')

#Powershell 風
replace('置換したい\n 文字列' ,'`n', '')

#VBA 風
replace('置換したい\n 文字列' ,char(10), '')

uriComponent を利用した置換は冗長

軽くググると以下のようなページがヒットする。

uriComponent で\nをパーセントエンコーディングしたあと置換する、という手法。 ただ、以下の引用のように式が長くなるし、やっていることが一目でわからなくなるのでやめた。

uriComponentToString(replace(uriComponent('置換したい\n 文字列'),'%0A',''))

視点を変えてググる

結局は置換から離れて、Flow で改行をどう扱うべきかを調べて、下記のページにたどり着く。 下記のページと同じようにいったん変数にして扱うことで解決を図った。

Microsoft Flow 上で複数行文字列を改行で分割する - Qiita