我有一个字符串
string a = "(something is there),xyz,(something there)";
,我用这个
string s = "(something is there),xyz,(something there)";
int start = s.IndexOf("(") + 1;
int end = s.IndexOf(")", start);
string result = s.Substring(start, end - start);
但我想使用第二部分(something there)
我怎么能这样做?
答案 0 :(得分:5)
不确定你到底在做什么,但是在这种特殊情况下会这样做:
var last = s.Split(',').Last(); // "(something there)"
或者更详细地解释:
var s = "(something is there),xyz,(something there)";
var split = s.Split(','); // [ "(something is there)", "xyz", "(something there)" ]
var last = split.Last(); // "(something there)"
如果你不想要括号(en-GB)
var content = last.Trim('(', ')'); // "something there"
答案 1 :(得分:3)
您可以使用:
string s = "(something is there),xyz,(something there)";
var start = s.Split(',')[2];
您也可以使用:
string s = "(something is there),xyz,(something there)";
Regex regex = new Regex(@"\([^()]*\)(?=[^()]*$)");
Match match = regex.Match("(something is there),xyz,(something there)");
var result = match.Value;
答案 2 :(得分:3)
a.Split("(),".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
这将返回一个包含3个字符串的数组:something is there
,xyz
和something there
答案 3 :(得分:3)
如果“last”与“second”相同,则可以使用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>
:
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
:
string first = tokens[0];
string second = tokens.ElementAtOrDefault(1);
如果列表太小,则会得到null
。如果您只想上次使用tokens.Last()
。
答案 4 :(得分:2)
如果您只想要文字,可以使用以下内容:
var s = "(something is there),xyz,(something there)";
var splits = s.Split('(');
var text = splits[2].Trim(')');
答案 5 :(得分:0)
如果你想在第二个'('和')'之间得到文本,那么使用IndexOf
的第二个参数来设置搜索的起始索引
start = s.IndexOf("(", end) + 1;
end = s.IndexOf(")", start);
string secondResult = s.Substring(start, end - start);
如果您想在最后)
之后获取该字符串,请使用此代码:
string otherPart = s.Substring(end+1);