String型変数の切り取り

UiPathの初めて1か月のものです。
ネットで調べてたのですが中々いい方法が思いつかず質問させていただきます。

ファイルからあるリクエストボディを読み取っているのですがロボット内はAPIを何回かに分けて叩くのでそれぞれのリクエストボディを下記みたいな形で分けています。

{リクエストボディA}{リクエストボディB}{リクエストボディC}

これをうまくリクエストボディAだけを切り取る際に「{」から「}」の部分だけを切り取りキーとして
指定したいのですが中々うまくいきません。

もしご存知の方おりましたらお知恵をご教授いただけると幸いです。
よろしくお願いいたします。

この回答から、応用できませんか?正規表現は私も勉強中です<m(__)m>

1 Like

もしリクエストボディがJSON形式で、{}が入れ子になるようだと難しい気がします(私も正規表現に詳しいわけではないですが)。
そもそも論ですが、A~Cのリクエストボディをそれぞれ別の変数に格納することは難しいのでしょうか(1つの変数に繋げて格納しなければいけない理由が、記載されている内容のみでは思い浮かばず…)。

こんにちは

JSONの構文としては }{ が出現する可能性はないので

System.Text.RegularExpressions.Regex.Match(strData,"(?<={)[\s\S]*?(?=}({|$))").Value

で抽出できると思います。
ただしやはり制約があって、内部の文字列として }{ が含まれているとうまくいきません。
精度上げるなら文字列全体をJSON形式になるようにしてJSONパーサーを利用するか、
@cheez_RPA さんも書かれているとおり、データの持ち方そのものを見直した方が良いかもしれません。

1 Like

それぞれ別のリクエストボディには入れられます。

やりたいことをまとめると
一つのファイルにまとまっているファイルをそれぞれ部分的にそれぞれの変数に入れたいので
どうやって切り分けることができるかというところになります。

ご返信ありがとうございます。

こちらなんですが例えば「{」「}」で始まらず、大文字の「、」で区切ったりしていれば
ご教授頂いた正規表現で区切ることは可能でしょうか。

こんにちは

問題は{}囲みの時と同様で、データ列の中に区切り文字が存在すると、それが
データなのか、区切り文字なのかの区別がつかないため、うまく区切れなくなる
可能性があることです。
そのため、データ列の中に「、」が存在しない前提があれば、簡単な
方法(Splitメソッド)で抽出可能ですが、存在する可能性がある場合は、
それなりの定義なり実装なりが必要になります。

今回データがJSONということであれば、例えばタブはデータ中で\tとして表現
されるので、タブを区切り文字として使用すれば、単純にSplitメソッドで区切る
ことができると思います。

まぁ、"}“でSPLITして、その配列から”{"以降を取るって手もありますな。

正規表現勉強中な私だったら、こうしちゃうな(^^♪