从一个字符串中创建一个数组,而不是一个一个地在字符串中创建它
Making an array out of a String and than making it in String one by one
我正在制作 minecraft-forge mod,但我在将字符串放入 Block#getBlockFromName(String name) 时遇到了问题。字符串:
String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;";
就像您在 -replace 之后看到的那样:我有一个块名称 (minecraft:stone) 和一个点,然后又是块名称和一个点。我想将每个块名称拆分成一个单独的字符串并一个一个地读取它,这样我就可以将它插入 Block#getBlockFromName 并从每个字符串中获取 1 个块。我尝试使用 String#split(".") 将其拆分为一个数组,但是当我使用 Arrays#toString 将其切换回 String 打印出数组时,它是空的。我想按点拆分它,因为我有一个配置文件,所以这些块可以更改为任何内容,我不能只从字符串中拉出 minecraft:stone,因为那些正在使用我的 mod将能够将 minecraft:stone 配置为其他内容,并通过在第一个块名称后使用点来添加另一个块名称。
这是我到目前为止所做的:
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]
我正在制作 minecraft-forge mod,但我在将字符串放入 Block#getBlockFromName(String name) 时遇到了问题。字符串:
String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;";
就像您在 -replace 之后看到的那样:我有一个块名称 (minecraft:stone) 和一个点,然后又是块名称和一个点。我想将每个块名称拆分成一个单独的字符串并一个一个地读取它,这样我就可以将它插入 Block#getBlockFromName 并从每个字符串中获取 1 个块。我尝试使用 String#split(".") 将其拆分为一个数组,但是当我使用 Arrays#toString 将其切换回 String 打印出数组时,它是空的。我想按点拆分它,因为我有一个配置文件,所以这些块可以更改为任何内容,我不能只从字符串中拉出 minecraft:stone,因为那些正在使用我的 mod将能够将 minecraft:stone 配置为其他内容,并通过在第一个块名称后使用点来添加另一个块名称。 这是我到目前为止所做的:
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]