1.13では、Minecraft言語ファイルは単純な複数行のkey = value形式からJSONに切り替えられました。
チャレンジ
JSON文字列を返す元の形式から変換するプログラムを作成します。入力は任意の標準入力メソッドを使用して取得できます。出力は標準出力メソッドのjsonである必要があります
元の形式には、キー=値のペアを持つ行が含まれます。たとえば
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
key = valueで1つの大きなJSONオブジェクトに変換する必要があります
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
いくつかの詳細
- 正しいキー/値のペアのみが含まれている限り、任意の有効なJSONが許可されます。Minecraftが許可するため、末尾のコンマが許可されます。
- エスケープする必要があるのは引用符のみです。(1.13より前の言語ファイルには、改行、バックスラッシュ、またはその他のJSONを破壊するものはありませんでした)
- 空行は無視する必要があります
- 行には、1つのイコール
テストケース
入力:
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
出力:
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
入力:
translation.test.none=Hello, world!
translation.test.complex=Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!
translation.test.escape=%%s %%%s %%%%s %%%%%s
translation.test.invalid=hi %
translation.test.invalid2=hi % s
translation.test.args=%s %s
translation.test.world=world
出力:
{
"translation.test.none": "Hello, world!",
"translation.test.complex": "Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!",
"translation.test.escape": "%%s %%%s %%%%s %%%%%s",
"translation.test.invalid": "hi %",
"translation.test.invalid2": "hi % s",
"translation.test.args": "%s %s",
"translation.test.world": "world",
}
入力:
stat.mineBlock=%1$s Mined
stat.craftItem=%1$s Crafted
stat.useItem=%1$s Used
stat.breakItem=%1$s Depleted
出力:
{
"stat.mineBlock": "%1$s Mined",
"stat.craftItem": "%1$s Crafted",
"stat.useItem": "%1$s Used",
"stat.breakItem": "%1$s Depleted"
}
=
ますか?
tile.dirt.name
なるの"block.minecraft.dirt"
?