Indexofの複数条件の設定方法

<row(“市区町村”).ToString.IndexOf(“市”) +1 Or row(“市区町村”).ToString.IndexOf(“区”)+1 Or row(“市区町村”).ToString.IndexOf(“町”)+1 Or row(“市区町村”).ToString.IndexOf(“村”)+1>

やりたいこととしては、「〇〇市〇〇〇〇」のようなデータの中で、「〇〇市」のみを取得したいです。上記のような条件で文字の位置を取得する際、「市区町村」いずれかの文字が2つ以上含まれていると、取得位置がおかしくなってしまいます(例えば「〇〇市〇〇〇〇町」だと、「3」という数字を取得して〇〇市を切り取りたいところ、「11」が返ってきます)。
何か解決方法はありますか?

Math.Min(row(“市区町村”).ToString.IndexOf(“市”) +1,row(“市区町村”).ToString.IndexOf(“区”)+1)を繰り返す…

市川市、四日市市、廿日市市などには注意!ですね(^^♪

こんにちは

row(“市区町村”).ToString.IndexOf(“市”) +1 Or row(“市区町村”).ToString.IndexOf(“区”)+1 Or row(“市区町村”).ToString.IndexOf(“町”)+1 Or row(“市区町村”).ToString.IndexOf(“村”)+1

この式の場合、orはビット単位の論理和演算子として機能しますので、ご希望の動作にはなりません。(詳しくは以下を参照ください。)

最初の出現位置を知りたいだけであれば以下お試しください。

row("市区町村").ToString.IndexOfAny("市区町村".ToCharArray)+1
3 Likes

助かりました。ありがとうございます。

良かったらこんなのもありますので、参考までに。

3 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.