string text = "{hello|{hi}} {world}";
实际上我希望来自给定字符串的每个出现位置的'{'和'}'
请帮帮我... 提前谢谢!
答案 0 :(得分:3)
您可以使用Regex.Matches。它将搜索由“|”分割的所有字符串在句子里。 您可以将所有带有索引的字符串添加到Dictioanry。
string pattern = "{|}";
string text = "{hello|{hi}} {world}";
Dictionary<int, string> indeces = new Dictionary<int, string>();
foreach (Match match in Regex.Matches(text, pattern))
{
indeces.Add(match.Index, match.Value);
}
结果是:
0-{
7-{
10-}
11-}
13-{
19-}
答案 1 :(得分:2)
var str = "{hello|{hi}} {world}";
var indexes = str.ToCharArray()
.Select((x,index) => new {x, index})
.Where(i => i.x=='{' ||i.x=='}')
.Select(p=>p.index);
结果
0
7
10
11
13
19
答案 2 :(得分:2)
你可以使用一个函数的正则表达式来循环你的字符
示例1
string text = "{hello|{hi}} {world}";
var indexes = new List<int>();
var ItemRegex = new Regex("[{}]", RegexOptions.Compiled);
foreach (Match ItemMatch in ItemRegex.Matches(text))
{
indexes.Add(ItemMatch.Index);
}
示例2(linq方式)
string text = "{hello|{hi}} {world}";
var itemRegex = new Regex("[{}]", RegexOptions.Compiled);
var matches = itemRegex.Matches(text).Cast<Match>();
var indexes = matches.Select(i => i.Index);
答案 3 :(得分:1)
创建两个列表
List<int> opening
List<int> closing
然后扫描字符串in int i = 0;我&lt; string.length -1; i ++。 将每个字符与开括号或右括号进行比较。 比如如果chr =='{'然后将计数器i放入相应的列表中。
在整个字符串之后你应该在相应的列表中有位置开始和结束括号。
这有帮助吗?
答案 4 :(得分:0)
你可以枚举出现的事件:
public static IEnumerable<int> FindOccurences(String value, params Char[] toFind) {
if ((!String.IsNullOrEmpty(value)) && (!Object.ReferenceEquals(null, toFind)))
for (int i = 0; i < value.Length; ++i)
if (toFind.Contains(value[i]))
yield return i;
}
...
String text = "{hello|{hi}} {world}";
foreach(int index in FindOccurences(text, '{', '}')) {
...
}