如果 「最後」在這種情況下,您可以使用「第二個」String.LastIndexOf
:
string lastPart = null;
int lastStartIndex = a.LastIndexOf('(');
if (lastStartIndex >= 0)
{
int lastEndIndex = a.LastIndexOf(')');
if (lastEndIndex >= 0)
lastPart = a.Substring(++lastStartIndex, lastEndIndex - lastStartIndex);
}
這裏是一個提取從字符串中的所有標記爲List<string>
的解決方案:如果列表太小
string first = tokens[0];
string second = tokens.ElementAtOrDefault(1);
:
int startIndex = -1, endIndex = -1;
var tokens = new List<string>();
while (true)
{
startIndex = a.IndexOf('(', ++endIndex);
if (startIndex == -1) break;
endIndex = a.IndexOf(')', ++startIndex);
if (endIndex == -1) break;
tokens.Add(a.Substring(startIndex, endIndex - startIndex));
}
所以,現在你可以使用索引或Enumerable.ElementAtOrDefault
你會得到null
。如果你只是想最後使用tokens.Last()
。
正則表達式會有所幫助。或者你可以使用'LastIndexOf',或者你可以使用'IndexOf'重載,它允許你指定搜索起始索引(使用最後一次搜索的索引+1)。或者你可以分開','並拿走最後一個元素。 – 2015-02-06 15:46:06
正則表達式有什麼問題? '@「\([^()] * \)(?= [^()] * $)「' – 2015-02-06 15:46:16
你是否總是想要第二個'('作爲開始還是你總是希望兩者的內容? – Hogan 2015-02-06 15:48:26