[英]Extract string that is between string X and string Y
有一個類似的問題在這里 。 在那個問題X恰好是(
而且恰好是Y )
。 我正在尋找類似的東西
public string GetStringBetweenStrings(string Source, string leftString, string rightString)
{
// implementation
Return middlePart;
}
因此,當我將該方法稱為:
var test = GetStringBetweenStrings("Hello World this is a test","World","test");
// then test = " this is a ";
我該如何構建該功能
在同一個鏈接的問題中,您有一個更靈活的答案,適用於所有字符串,在此修改:
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;
}
使用IndexOf函數找到兩個字符串。 然后使用SubString提取您需要的內容。
IndexOf
是最直接的。 確保將開頭偏移到第一個字符串之后。 如果左/右可能重疊,我還添加了一些(未經測試的)代碼來處理。
public string GetStringBetweenStrings(string Source, string leftString, string rightString)
{
var left = Source.IndexOf(leftString);
var right = Source.IndexOf(rightString);
while (right > -1 && left + leftString.Length >= right)
{
right = Source.IndexOf(rightString, right + 1);
}
if (left > -1 || right > -1 || left < right)
return null;
var start = left + leftString.Length;
var end = right;
return Source.Substring(start, end - start);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.