我有一个字符列表:
var myList = new List<char>(new[] { 'x', 'y', '(', 'a', 'b', 'c', ')', 'z' });
具有值:
'x'
'y'
'('
'a'
'b'
'c'
')'
'z'
我怎样才能将花括号之间的所有值取下来?新列表中的值应如下所示:
'a'
'b'
'c'
列表中大括号的索引可以在每个会话中更改。
答案 0 :(得分:5)
您可以使用此LINQ表达式:
myList.SkipWhile(c => c != '(').Skip(1).TakeWhile(c => c != ')')
^----- 1 --------------^ ^- 2 -^ ^-------- 3 -----------^
(
(
)
(不会包含在内)注释:
答案 1 :(得分:0)
您可以创建一个循环,如果找到的话就使用'['(方括号),然后直到找不到方括号']'为止,然后将字符添加到另一个数组中。
答案 2 :(得分:0)
您也可以按照以下步骤进行操作:
int start = myList.IndexOf('(') + 1;
int end = myList.IndexOf(')');
var result = myList.Skip(start).Take(end - start).ToList();
答案 3 :(得分:0)
var myList = new List<char>(new[] { 'x', 'y', '(', 'a', 'b', 'c', ')', 'z' });
var start = myList.FindIndex((c) => c == '(');
var end = myList.FindIndex((c) => c == ')');
if (start != -1 && end != -1 && start < end)
{
var result = myList.GetRange(start + 1, end - start - 1));
}
else
{
// return null or throw error
}