したがって、区切り文字に基づいて文字列を分割することは、「ol string.split」を使うと簡単です。今度は開いた中かっこと閉じた中かっこで分割したいとしましょう。また、と単純明快:ネストされた区切り文字の間で文字列をトークン化
var foo = "{foo}{bar}";
var splitme = foo.Split(new char[] { '{', '}'});
今度は、最初の開口部が/深いnレベルまで、} {閉じる内部にネスト{}を追加することによって、それをより複雑にしてみましょう。私がしてきたのは、ゲーム改造のための独占的なテキストファイル形式(stellaris、great game)のように見えるものを解析しようとしており、私はこのことを解析する良い方法を探しています。括弧で囲まれた(トークン化された)テキストの各部分を保存するにはどうすればよいですか?このミックスに追加することは、関係の指標として=を使用して、ビジネスのキーバリューペアのソートを維持することです。ここで
は、私はこの方法で解析しようとしている何かの例です:
#Neutronium Materials
tech_ship_armor_5 = {
area = engineering
cost = @tier3cost4
tier = 3
category = { materials }
ai_update_type = military
prerequisites = { "tech_ship_armor_4" "tech_mine_neutronium" }
weight = @tier3weight4
weight_modifier = {
factor = 1.25
modifier = {
factor = 1.25
research_leader = {
area = engineering
has_trait = "leader_trait_expertise_materials"
}
}
}
ai_weight = {
modifier = {
factor = 1.25
research_leader = {
area = engineering
has_trait = "leader_trait_expertise_materials"
}
}
}
}
私の最初のアプローチは、StreamReaderを持つ線で、この不良少年のラインを読み、{何を追跡することでした私は彼らが対応する}で閉じ始める前に走ります。 {}の各塊の中で、私はそれを探し出し、私が見つけたキーバリューペアとそれが階層内に存在する場所を見つけます。これは...理想的ではないようです。いくつかの正規表現の魔法や棚のテキスト解析ライブラリからの方が良い方法がありますか?
このようなANTLR – dman2306