我正在制作一个minecraft-forge mod,我遇到了将String放入Block#getBlockFromName(String name)的问题。字符串:
String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;";
就像你看到的那样 - 替换:我有一个块名(我的世界:石头)和一个点,而不是块名和一个点。我想将每个块名称拆分为一个单独的String并逐个读取,这样我就可以将它插入到Block#getBlockFromName中,并从每个String中获取1个块。我尝试使用String#split(“。”)将其拆分为一个数组,但是当我通过使用Arrays#toString将它切换回String时打印出数组时,它是空的。我想通过点分割它,因为我有一个配置文件,所以这些块可以改为任何东西,我不能只是拔出我的世界:因为那些使用我的mod的人将能够配置minecraft:stone to other else,并在第一个块名称后面使用一个点添加另一个块名称。 这就是我到目前为止所做的:
String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;";
String block1 = oreName.substring(oreName.indexOf("-replace:"));
String block2 = block1.replace("-replace:", "");
String block3 = block2.contains(" -") ? block2.substring(0, block2.indexOf(" ")) : block2.replace(";", "");
System.out.println("The Block Names Are: " + block3); // It prints it just without "minecraft:iron_ore -replace:" and ";" at the end
String[] block4 = block3.split(".");
System.out.println("The array: " + Arrays.toString(block4)); // only prints out "The array: []"
答案 0 :(得分:0)
问题是String.split()
将正则表达式作为参数。
对于您的情况,您需要将.
符号转义为:
String[] block4 = block3.split("\\.");
打印
The array: [minecraft:stone, minecraft:netherrack, minecraft:end_stone]