12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【PowerApps Tip's】改行で文字列分割

Last updated at Posted at 2019-09-14

「ブラウザーによって異なる可能性」ってのがいやらしい・・・。

はじめに

アプリケーションを作成していると、文字列を指定した文字で分割したいタイミングが発生します。はい、そんな時には「Split関数」ですね。

PowerApps の Split 関数

Split 関数はテキスト文字列を部分文字列のテーブルに分割します。

例えば、”2019/09/14”という文字列を年、月、日の各々に分割したい場合などに利用します。

Split( "2019/09/14" , "/" )

結果は下記になります。

Result
2019
09
14

改行でSplitしたい

業務アプリなどを考えている際に「改行コードで分割する」という必要に迫られる場合があります。プログラミング経験者は、おそらくピンときたことでしょう。そう、改行コードはOSなどの環境によって異なるんですよね。

改行コード(Wikipedia)

改行コードとブラウザー

嫌な予感がして調べてみたら、ブラウザーの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 関数

動作イメージ

左側:TextInput コントロール、MultiLineモード
右側:ListBox コントロール、Itemsに下記を指定

ListBox.Items
Split(Substitute(TextInput.Text,Char(13),""),Char(10))

まとめ

おそらく、上記の動作イメージのような簡単な表示で利用するケースは少ないと思います。改行コードで分割した結果をもとに、データソースを検索したり、1行ずつ更新したり、が発生するのではないでしょうか。

その場合、Split 関数の戻り値”テーブル”(といっても、1列なので、配列と思っても差し支えはないと思うけども・・・)をうまく活用することを考える必要があります。検索する場合、そこらへん意識したキーワードで実施されると幸せになれるかもしれません。

それでは、皆さま。素晴らしい Power Platform Life を!

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?