2つのコンマとタブおよび空白を含む配列に文字列があります。その文字列の2つの単語をコンマの前にカットしようとしています。タブと空白は気にしません。
私の文字列はこれに似ています:
String s = "Address1 Chicago, IL Address2 Detroit, MI"
最初のコンマのインデックスを取得します
int x = s.IndexOf(',');
そしてそこから、最初のコンマのインデックスの前に文字列をカットします。
firstCity = s.Substring(x-10, x).Trim() //trim white spaces before the letter C;
2番目のコンマのインデックスを取得して2番目の文字列を取得するにはどうすればよいですか?
本当に助かりました!
このようなコードを使用する必要があります。
int index = s.IndexOf(',', s.IndexOf(',') + 1);
ただし、文字列の境界を超えないようにする必要があります。その部分はあなたに任せます。
この拡張メソッドを作成したばかりなので、文字列内の任意の部分文字列のn番目のインデックスを取得できます
public static class Extensions
{
public static int IndexOfNth(this string str, string value, int nth = 1)
{
if (nth <= 0)
throw new ArgumentException("Can not find the zeroth index of substring in string. Must start with 1");
int offset = str.IndexOf(value);
for (int i = 1; i < nth; i++)
{
if (offset == -1) return -1;
offset = str.IndexOf(value, offset + 1);
}
return offset;
}
}
注:この実装では、0ベースのインデックスの代わりに1 = firstを使用します。これは、最初にnth++;
を追加し、わかりやすくするためにエラーメッセージを変更することにより、0 = firstを使用するように簡単に変更できます。