2017-04-21 2 views
1

Je crée un mod minecraft-forge et j'ai des problèmes pour placer une chaîne dans le bloC# getBlockFromName (nom de la chaîne). la chaîne:Création d'un tableau à partir d'une chaîne et création d'une chaîne un par un

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

Et comme vous voyez après -replace: J'ai un nom de bloc (minecraft: pierre) et un point et que bloquer à nouveau nom et un point. Je veux diviser chaque nom de bloc en une chaîne séparée et le lire un par un afin que je puisse l'insérer dans le bloC# getBlockFromName et obtenir 1 bloc de chaque chaîne. J'ai essayé d'utiliser String # split (".") Pour le diviser en un tableau, mais quand j'imprime le tableau quand je l'ai ramené à String en utilisant Arrays # toString, il était vide. Je veux le diviser par des points car j'ai un fichier de configuration donc ces blocs peuvent être changés en n'importe quoi, je ne peux pas sortir minecraft: stone de la chaîne parce que ceux qui utilisent mon mod pourront le configurer minecraft: coche à autre chose et ajoute un autre nom de bloc en utilisant un point après le premier nom de bloc. C'est ce que je l'ai fait jusqu'à présent:

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

double possible de [Split Enfiler point. comme délimiteur] (http://stackoverflow.com/questions/3387622/split-string-on-dot-as-delimiter) – esin88

+0

Problème presque entièrement dû à la question plus ancienne en double. De plus, point n'est probablement pas un bon délimiteur de toute façon. Dès qu'un bloc de mod vient avec un nom comme, par exemple, 'mymod: ores.copper' votre système tombe en morceaux. ';', '!', ou '|' serait mieux. – Draco18s

Répondre

0

Le problème est que String.split() prend l'expression régulière comme argument. Pour votre cas, vous devez échapper symbole . avec:

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

qui imprime

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

Si la question est un doublon, indiquez-le comme doublon. Ne pas * répondre *. – Draco18s