Tatsu.H
1
replace アクティビティを使用して、jsonファイルの中の文字列を置換させる作業を行いたいのですがどうもうまくいきません。
私が行った手順としましては
①jsonファイルの文字列"あいうえabcd"を入力項目に
②パターン項目に"abcd"を入力
③置換項目に"[0-9]{4}“と入力し、0~9の適当な数字が4個並ぶようにしたいのですが、置換後のものを出力すると”[0-9]{4}"のまま出力されてしまいます。なにか他にやらなければいけない処理などがあるのでしょうか。?
答えをお持ちの方がいらしたらご教示お願いしたいです。
Yoichi
(Yoichi)
2
こんにちは
正規表現で乱数は生成できませんので、あらかじめ置換対象の文字列を用意する必要があります。
Tatsu.H
3
置換対象の文字列をあらかじめ用意していてもダメでした。。。
Yoichi
(Yoichi)
4
こんにちは
もう少し補足しますと
[0-9] や \dといった表現は正規表現パターンと呼ばれ、このアクティビティでいうとパターンプロパティの部分でしか使えません。そのため置換プロパティはすべて単なる文字列扱いになります。
例えば以下のように設定しますが、動作しませんでしょうか?
Yoichi
(Yoichi)
5
たびたびすみません。
もしJSON文字列内の一部を置換したいのであれば、入力はJSON文字列そのものである必要があります。
Tatsu.H
6
上記示していただいたように設定すれば動作はしますが、やはり文字列として認識されてしまいます。
私がここでおこないたいのは、0~9の適当な数字が4つ(どの数字がくるかは分からない。。)きても対応できるようにしたい感じです。
Yoichi
(Yoichi)
8
こんにちは
いまいち実現したいことがよく理解できませんので、Replace前後の例を示してもらえると、ありがたく思います。
Tatsu.H
9
すいません。。。
私も状況がこんがらがってきたのでいったん整理してきます。。
ご回答ありがとうございました!
Tatsu.H
10
すいません。もう一度やりたいことを整理したのでご教示いただけると有難いです。
①yyyymmdd(あいうえabcd).xlsxファイルがある
(yyyymmddは0埋め処理で対処済み)
②上記ファイルのabcdには0~9の適当な数字4文字が入る
③ファイルネームチェックで、abcdに適当な4文字の数字が入った状態でファイルネームが記載されていればOKという判定をしたい
例) 2019(あいうえ0205).xlsx
以上、がやりたいことの流れです。先程はreplaceメソッドを用いてabcdを適当な数値に置換しようとしていましたが、そもそも置換できなかったですね。。
この場合、isMatch関数を使うべきなのでしょうか。?
Yoichi
(Yoichi)
11
こんにちは
IsMatchアクティビティでよろしいかと思います。
例の年月日部分が4桁しかありませんが8桁あるものとして、「(あいうえ」の部分は固定と仮定すると、パターンは以下になるかと思います。
"^\d{8}\(あいうえ\d{4}\).xlsx$"
(\
は日本語環境では円マークになります。)
例えば
2019(あいうえ0205).xlsx →false
20191223(あいうえ1234).xlsx →true
になると思います。
なお元データがファイルパスがフルパスの場合はSystem.IO.Path.GetFileName()を用いてファイル名だけを取得してもらえると良いと思います。
Tatsu.H
12
ご回答ありがとうございます。!
Yoichi様がご教示くださった方法で一度ためしてみたいと思います。
ありがとうございました!!
Tatsu.H
13
度々すいせん。
この場合、読み込み先のjsonファイルにはファイル名をどのように記載してあげれば宜しいでしょうか。
といいますのも、流れとしましては、
①jsonファイルにファイル名を記載
②ロボがjson ファイル情報を読み取り、この際にロボが読み込んだファイル名を変数に格納する
③isMatch関数を用いて実際に格納されているファイル名とロボがjsonファイルより読み込んだファイル名とマッチするかどうかチェックする。
このような流れなのですが、
yyyymmdd(あいうえabcd).xlsx
すでに、yyyymmddのほうは{0}と0埋めできるように指定しているのですが、
このabcdの部分はどう記載しておけば宜しいでしょうか?
現在の記載状況は以下の通りです。
“{0}(あいうえabcd).xlsx”
※"{0}(あいうえ[0-9]{4})"としましたがうまくいきませんでした。
何度も申し訳ないのですが、ご教示いただければ幸いです。
Yoichi
(Yoichi)
14
こんにちは
{}は正規表現で繰り返しの量指定子ですので、0埋めの意味にはなりません。
また括弧は正規表現で特殊な意味を持ちますので、\でエスケープする必要があります。
そのため
"[0-9]{8}\(あいうえ[0-9]{4}\)"
とする必要があります。
なお先に記述した式にあります\dは[0-9]と等価になります。(のでどちらで記述しても大丈夫です。)