「ブラウザーによって異なる可能性」ってのがいやらしい・・・。
はじめに
アプリケーションを作成していると、文字列を指定した文字で分割したいタイミングが発生します。はい、そんな時には「Split関数」ですね。
Split 関数はテキスト文字列を部分文字列のテーブルに分割します。
例えば、”2019/09/14”という文字列を年、月、日の各々に分割したい場合などに利用します。
Split( "2019/09/14" , "/" )
結果は下記になります。
Result |
---|
2019 |
09 |
14 |
改行でSplitしたい
業務アプリなどを考えている際に「改行コードで分割する」という必要に迫られる場合があります。プログラミング経験者は、おそらくピンときたことでしょう。そう、改行コードはOSなどの環境によって異なるんですよね。
改行コードとブラウザー
嫌な予感がして調べてみたら、ブラウザーのVerによっても改行コードが異なるようです。例えば、Windowsは標準では「改行コード=CRLF」のハズです。しかしながら、ブラウザーのVerによっては「改行コード=LF」になるとのこと。メンドクサイですね・・・。
http://shimax.cocolog-nifty.com/search/2006/09/post_b296.html
https://blog.dreamarts.co.jp/creator/cr20160921/
古い記事ですが、可能性として「CRLF」と「LF」のパターンが存在する可能性を考慮したほうがよい、と結論づけました。
「CR」のみは古いMac OS でしょうし、無視しちゃって大丈夫でしょう。おそらくw
PowerApps 改行コードでSplit
ブラウザーでも改行コードが異なる可能性があるのですが「CRのみ」は発生しない(またはサポートしない)と考えると「LF」で分割すれば良い、と判断できます。
改行で分割する関数
Split(Substitute([分割ターゲットの文字列],Char(13),""),Char(10))
Char(13) = CR
Char(10) = LF
です。
Substitute 関数で Char(13) = CR を削除して、その後で Char(10) = LF で Split 関数による分割をしています。これであれば、LFをターゲットに分割が可能です。
PowerApps の Replace および Substitute 関数
動作イメージ
#PowerApps 改行コード 分割 pic.twitter.com/S6sMTbMwnx
— やま (@yamad365) September 14, 2019
左側:TextInput コントロール、MultiLineモード
右側:ListBox コントロール、Itemsに下記を指定
Split(Substitute(TextInput.Text,Char(13),""),Char(10))
まとめ
おそらく、上記の動作イメージのような簡単な表示で利用するケースは少ないと思います。改行コードで分割した結果をもとに、データソースを検索したり、1行ずつ更新したり、が発生するのではないでしょうか。
その場合、Split 関数の戻り値”テーブル”(といっても、1列なので、配列と思っても差し支えはないと思うけども・・・)をうまく活用することを考える必要があります。検索する場合、そこらへん意識したキーワードで実施されると幸せになれるかもしれません。
それでは、皆さま。素晴らしい Power Platform Life を!