2017-04-21 115 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

相關問題