我正在制作一个 minecraft-forge mod,但在将字符串放入 Block#getBlockFromName(String name) 时遇到问题。字符串:
String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;";
就像你在 -replace 之后看到的那样:我有一个 block 名称(minecraft:stone)和一个点,然后又是 block 名称和一个点。我想将每个 block 名称拆分为一个单独的字符串并一一读取它,以便我可以将其插入到 Block#getBlockFromName 中并从每个字符串中获取 1 个 block 。我尝试使用 String#split(".") 将其拆分为一个数组,但是当我使用 Arrays#toString 将其切换回 String 并打印出该数组时,它是空的。我想用点分割它,因为我有一个配置文件,这样这些 block 就可以更改为任何内容,我不能只是从字符串中取出“minecraft:stone”,因为使用我的 mod 的人将能够将该“minecraft:stone”配置为其他内容,并通过在第一个 block 名称后使用点来添加另一个 block 名称。 这是我到目前为止所做的:
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: []"
最佳答案
问题是 String.split()
将正则表达式作为参数。
对于您的情况,您需要使用以下命令转义 .
符号:
String[] block4 = block3.split("\\.");
哪个打印
The array: [minecraft:stone, minecraft:netherrack, minecraft:end_stone]
关于java - 从字符串中创建一个数组,然后将其一个一个地放入字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43550913/