同じリンクされた質問で、ここで変更された、すべての文字列に対して機能するより柔軟な回答があります。
public string GetStringBetweenStrings(string source, string leftString, string rightString)
{
int start = source.IndexOf(leftString); // assume != -1
int end = source.IndexOf(rightString); // assume != -1 and >= start
if (start == -1 || end == -1 || end < start) return String.Empty;
return source.Substring(start + leftString.Length, end - start - rightString.Length - 1)
}
これは、両方の文字列がソース文字列に含まれていることを前提としています。どちらかがそうでない場合、どのような動作が必要ですか?または、開始が終了後の場合はどうなりますか?
@Jackによる必須の正規表現バージョンですが、機能に更新されています:
public string GetStringBetweenStrings(string source, string leftString, string rightString)
{
return Regex.Match(source, String.Format(@"(?<={0})(.*)(?={1})",
Regex.Escape(leftString),
Regex.Escape(rightString)))
.Captures[0].Value;
}