2017-04-21 144 views
1

我正在创建一个minecraft-forge mod,并且在将字符串放入块中时出现问题#getBlockFromName(String name)。字符串:从字符串中创建一个数组,然后在字符串中逐个创建一个

String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;"; 

和你一样-replace后看到:我有一个块的名字(我的世界:石)和一个点,比再次阻止名和一个点。我想将每个块名称拆分为一个单独的字符串并逐一读取,以便我可以将它插入块#getBlockFromName并从每个字符串中获取1个块。我尝试使用String#split(“。”)将其分割成数组,但是当我通过使用数组#toString将它切换回String时,它是空的。我想用点来分割它,因为我有一个配置文件,所以这些块可以更改为任何东西,我不能只是拔出minecraft:Stone,因为使用我的mod的人将能够配置我的世界:石头到其他东西,并通过在第一个块名称后面使用点添加另一个块名称。 这是我迄今所做的:

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: []" 
+1

的[分割字符串可能的复制。作为分隔符](http://stackoverflow.com/questions/3387622/split-string-on-dot-as-delimiter) – esin88

+0

问题几乎完全是由于重复的旧问题。另外,dot可能不是一个好的分隔符。只要一个mod块出现一个名字,比如说'mymod:ores.copper',你的系统就会崩溃。 ';','!'或'|'会更好。 – Draco18s

回答

0

问题是,String.split()需要正则表达式作为参数。 对于你的情况,你需要逃避.符号用:

String[] block4 = block3.split("\\."); 

它打印在点阵

The array: [minecraft:stone, minecraft:netherrack, minecraft:end_stone] 
+0

如果问题是重复的,请将其标记为重复。不要*回答*。 – Draco18s

相关问题