文字列内で特定の文字が N 番目に出現するインデックスを返す関数を作成しようとしています。
これが私の試みです:
private int IndexOfNth(string str, char c, int n)
{
int index = str.IndexOf(c) + 1;
if (index >= 0)
{
string temp = str.Substring(index, str.Length - index);
for (int j = 1; j < n; j++)
{
index = temp.IndexOf(c) + 1;
if (index < 0)
{
return -1;
}
temp = temp.Substring(index, temp.Length - index);
}
index = index + (str.Length);
}
return index;
}
これにより、最初の出現が検出され、文字列の先頭部分が切り捨てられ、新しい部分文字列から最初の出現が検出され、n 番目の出現のインデックスが取得されるまで繰り返されます。ただし、最終的な部分文字列のインデックスが元の文字列の元の実際のインデックスからどのようにオフセットされるかを考慮できませんでした。どうすればこれを機能させることができますか?
また、副次的な質問として、char をタブ文字にしたい場合は、この関数 '\t' または何を渡しますか?