如何以某种方式打印输出
How do I print output in a certain way
我使用 LINQ 查询编写了这段代码
static public void BracesRule(String input)
{
//Regex for Braces
string BracesRegex = @"\{|\}";
Dictionary<string, string> dictionaryofBraces = new Dictionary<string, string>()
{
//{"String", StringRegex},
//{"Integer", IntegerRegex },
//{"Comment", CommentRegex},
//{"Keyword", KeywordRegex},
//{"Datatype", DataTypeRegex },
//{"Not included in language", WordRegex },
//{"Identifier", IdentifierRegex },
//{"Parenthesis", ParenthesisRegex },
{"Brace", BracesRegex },
//{"Square Bracket", ArrayBracketRegex },
//{"Puncuation Mark", PuncuationRegex },
//{"Relational Expression", RelationalExpressionRegex },
//{"Arithmetic Operator", ArthimeticOperatorRegex },
//{"Whitespace", WhitespaceRegex }
};
var matches = dictionaryofBraces.SelectMany(a => Regex.Matches(input, a.Value)
.Cast<Match>()
.Select(b =>
new
{
Index = b.Index,
Value = b.Value,
Token = a.Key
}))
.OrderBy(a => a.Index).ToList();
for (int i = 0; i < matches.Count; i++)
{
if (i + 1 < matches.Count)
{
int firstEndPos = (matches[i].Index + matches[i].Value.Length);
if (firstEndPos > matches[(i + 1)].Index)
{
matches.RemoveAt(i + 1);
i--;
}
}
}
foreach (var match in matches)
{
Console.WriteLine(match);
}
}
它的输出是这样的
{Index=0, Value= {, Token=Brace}
但我希望输出像
{ 大括号
一种可能性是修改匿名对象——从 Key
(=Brace) 和 Value
(={ or }):
创建字符串
string input = "ali{}";
//Regex for Braces
string BracesRegex = @"\{|\}";
Dictionary<string, string> dictionaryofBraces = new Dictionary<string, string>()
{
{"Brace", BracesRegex }
};
var matches = dictionaryofBraces.SelectMany(a => Regex.Matches(input, a.Value)
.Cast<Match>()
.Select(b => String.Format("{0} {1}", b.Value, a.Key.ToUpper())))
.OrderBy(a => a).ToList();
foreach (var match in matches)
{
Console.WriteLine(match);
}
输出如愿:
{ BRACE
} BRACE
我使用 LINQ 查询编写了这段代码
static public void BracesRule(String input)
{
//Regex for Braces
string BracesRegex = @"\{|\}";
Dictionary<string, string> dictionaryofBraces = new Dictionary<string, string>()
{
//{"String", StringRegex},
//{"Integer", IntegerRegex },
//{"Comment", CommentRegex},
//{"Keyword", KeywordRegex},
//{"Datatype", DataTypeRegex },
//{"Not included in language", WordRegex },
//{"Identifier", IdentifierRegex },
//{"Parenthesis", ParenthesisRegex },
{"Brace", BracesRegex },
//{"Square Bracket", ArrayBracketRegex },
//{"Puncuation Mark", PuncuationRegex },
//{"Relational Expression", RelationalExpressionRegex },
//{"Arithmetic Operator", ArthimeticOperatorRegex },
//{"Whitespace", WhitespaceRegex }
};
var matches = dictionaryofBraces.SelectMany(a => Regex.Matches(input, a.Value)
.Cast<Match>()
.Select(b =>
new
{
Index = b.Index,
Value = b.Value,
Token = a.Key
}))
.OrderBy(a => a.Index).ToList();
for (int i = 0; i < matches.Count; i++)
{
if (i + 1 < matches.Count)
{
int firstEndPos = (matches[i].Index + matches[i].Value.Length);
if (firstEndPos > matches[(i + 1)].Index)
{
matches.RemoveAt(i + 1);
i--;
}
}
}
foreach (var match in matches)
{
Console.WriteLine(match);
}
}
它的输出是这样的 {Index=0, Value= {, Token=Brace}
但我希望输出像 { 大括号
一种可能性是修改匿名对象——从 Key
(=Brace) 和 Value
(={ or }):
string input = "ali{}";
//Regex for Braces
string BracesRegex = @"\{|\}";
Dictionary<string, string> dictionaryofBraces = new Dictionary<string, string>()
{
{"Brace", BracesRegex }
};
var matches = dictionaryofBraces.SelectMany(a => Regex.Matches(input, a.Value)
.Cast<Match>()
.Select(b => String.Format("{0} {1}", b.Value, a.Key.ToUpper())))
.OrderBy(a => a).ToList();
foreach (var match in matches)
{
Console.WriteLine(match);
}
输出如愿:
{ BRACE
} BRACE