ファイルパスの中で特定の文字が含まれているかをcontainsメソッドで調べてます
ところがファイル名の中に2が入っている場合という分岐で、ファイル名に21が入っているものが先に来てしまうと、分岐がトゥルーになります
これを完全一致にする方法はありますか?
こんにちは
要件にもよりますが、数字列が例えば2だけかどうかを検査したいのであれば、
System.Text.RegularExpressions.Regex.Match(text,"\d+").Value="2"
で判定できます。
もしファイル名だけを検査したいのに途中のパス名が影響しているという話であれば
System.IO.Path.GetFileName
メソッドでファイル名部分だけを抽出してから
上記の検査を行うと良いと思います。
カードをお送りいただき誠にありがとうございます
調べたいのは文字列になります
あるファイルパスの中から「NO.2」が含まれているものを完全一致で調べたくて
その場合、コードの書き方はどうなりますか?
こんにちは
「完全一致」の用語の意味がかなり微妙に思えますが、例えば上記同様に、NO.2 にはマッチして
NO.21にはマッチしないということであれば、
System.Text.RegularExpressions.Regex.Match(text,"NO\.\d+").Value="NO.2"
等で判定できると思います。
いただいたコードを真似して書いたのですが、NO2 NO21 共に分岐でフォルスに流れてしまいます
こんにちは
対象文字列は NO.2 でしょうか?それとも NO2 でしょうか?
前述の質問での文字列は NO.2 でしたので NO2 はFalseになります。
齟齬がないよう、実際のパス文字列や条件分岐に指定している条件式等を明示いただく方が良いかと思います。
こちらの伝達ミスでした
下記に詳細を記載します
フォルダ内
No2.xlsx
No21.xlsx
このフォルダをdirectory get filesでファイルパスを取得
繰り返しコレクションの各要素で、フォルダの数だけ繰り返し、
ファイルパスの中から、No2 というファイル名を取得し、 filenameという変数に格納
先ほどいただいたコードで下記のように設定
System.Text.RegularExpressions.Regex.Match(filename,“No.\d+”).Value=“No2”
すみません!僕の構文エラーでした!
お騒がせしました
こんにちは
このケースですと、正規表現でのマッチングよりも、ファイル名だけを抽出してそれを
比較する方が良いかもしれません。
System.IO.Path.GetFileNameWithoutExtension(filename)= "No2"
もし正規表現で行うなら
System.Text.RegularExpressions.Regex.Match(text,"No\d+").Value="No2"
になりますが、途中のパス中に同じ文字列があってもTrueになるので、
要件次第で使い分けてもらえればと思います。
すみません追加で質問で
事前に比べたい値を格納してある
strNoを用意します
この変数の中には順番に
No1-A.xlsx
No2.xlsx
No21.xlsx
と順番にファイルパスを繰り返して変数に格納します
フォルダ内
No1-A.xlsx
No2.xlsx
No21.xlsx
この状態でこのフォルダをdirectory get filesでファイルパスを取得
繰り返しコレクションの各要素で、フォルダの数だけ繰り返し、
ファイルパスの中から、No1-Aというファイル名を取得し、 filenameという変数に格納
先ほどいただいたコードで下記のように設定
System.Text.RegularExpressions.Regex.Match(filename,“No\d+”).Value=strNoとしたときに、No2のときはちゃんとNo22と区別するのですが、 No1-Aの時はファイルが一つしかないので普通に処理をして欲しいのに、処理をしてくれてないです
この場合、一つしかないファイルはちゃんと処理をさせたいのですがどうすればよろしいでしょうか?
この場合は
こんにちは
No1-Aの時でも、strNoがNo1になっていれば、Trueになるはずですが...
strNoの中身は適切でしょうか。またこの式は大文字小文字を厳密に評価されますので
そのあたりも問題なさそうでしょうか?
まずはこのあたりをご確認いただければと思います。
横から失礼いたします。
strNoの中身がいまいち理解できていないのですが、変数filenameと変数strNoはイコールではないのでしょうか?
directory.getfilesでファイルのパスを取得
その変数をコレクションの各要素のコレクションに入れる
中に代入でget file name without extensionで変数filenameを作る
条件分岐のコンディション部分に変数strNoイコール変数file nameを入れる
thenに、イコールだったらの処理を入れる
こんな感じじゃ駄目ですか?
正規表現の話題になっているところ申し訳ありませんが。