文字列の変換

youtubeでそのビデオの長さをapi workflowでとってくると、「PT11M43S」や「PT8M8S」のような形で取得することが可能です。これは、それぞれ「11:43」や「8:08」という形で出力したいと考えています。

ここで質問なのですが、「PTをfind & replaceで削除」、「Mをfind & replaceで : に変換」、「Sをfind & replaceで削除」は可能なのですが、その場合、「11:43」は良いのですが、後者は「8:8」となり、秒の頭に「0」が足りません。どうすれば、「8:08」となるか教えて頂けないでしょうか?

「MとSの間の文字列を取得」ができればいいのですが、そのような設定はできないと思っているのですが、いかがでしょうか?

秒が一桁と決まっていれば問題ないのですが、二桁の場合もあるので、どちらも対応できるようにするにはどうするべきかと考えております。

きっとBubbleの設定のみで簡単にできる方法があればそれがベストだと思いますが
私は思い浮かばず…

quonjiさんが望まれている形ではないかもしれませんが
JavaScript呼んでの処理で考えてみました。

ですので、もっと簡単にできる良い方法があれば
どなたかフォローお願いしますm(__)m
私も知りたいです…(笑)

①「PTをfind & replaceで削除」「Mをfind & replaceで : に変換」「Sをfind & replaceで削除」
Bubble側ではこの状態にしておく

②JavaScript発動

②-1:Bubble側で設定した①の文字列を取得
②-2:「:」で区切って配列にセット
②-3:配列数分、繰り返す際に
文字列が2文字より小さい場合は先頭に0を足す(0埋め)
②-4 ②-3を繋ぎ合わせてBubble側に返す

というようなことをやってみました。

JavaScripttoBubbleの設定

Run JavaScriptの中身

Javascriptのトリガーイベントの中身

本当は①の処理もJavaScript内でやってしまう方が
処理がまとまってていいと思いますが
今回は①が設定済みの状態からのスタートにしてみました。

「いいね!」 2

こんにちは。文字列操作、ちょっとしたことのやり方が分からなくて私も長時間悩むことがあります。Bubble標準機能だけで無理やりやれる方法考えてみました。(もっといい方法があれば私も知りたい…)

  • 文字列の分割 → :extract with Regex
  • 0埋め → 前ゼロをつけて、後ろから2文字 :truncated truncated end to 2

image

:extract with Regexは正規表現という呪文みたいなパターン文字列で抽出するもので、今回指定しているRegex pattern \d+は 1文字以上の連続した数字(0-9)になります。
(正規表現についてはググってもらうと色々見つかるかと思います。)

今回の文字列では「時間」と「分」の2箇所に連続した数字があるはずなので、2itemのリストでとれてきますので fist itemとlast itemで分離してます。

前ゼロ埋めは、とりあえず0を前につけて、:truncated from end to 2 で後ろから2文字とれば良いです。文字列加工してから:truncated~するために、Arbitrary textの中で作りました。

Arbitrary textは算数のカッコ()みたいに演算子の優先順位を先にするために使えるので便利ですね。

Editor はこちらです。

「いいね!」 4

:truncated to 文字数
:truncated from end to 文字数

という2つのものがあって、前者は先頭から文字数分だけ取り出し。
後者は末尾から文字数分だけ取り出しすることが可能です。

これを使って、Conditinalで
末尾から3文字以内にMが含まれない場合(PT11M43S)は、
PT11M43S → find&replace(PT⇨削除)、find&replace(M⇨:)、find&replace(S⇨削除)

末尾から3文字以内にMが含まれる場合(PT8M8S)は、
PT8M8S → find&replace(PT⇨削除)、find&replace(M⇨:0)、find&replace(S⇨削除)

とすればシンプルにできそうです

サンプル↓

「いいね!」 6

@yuzupon5232
@Tak
@K.nakata

みなさん、ご回答頂きまして誠にありがとうございます。
参考にさせてください!!!

「いいね!」 1