java - 从字符串中创建一个数组,然后将其一个一个地放入字符串中

标签 java arrays string minecraft-forge

我正在制作一个 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/

相关文章:

c# - 获取字符串中字符第 n 次出现的索引

java - XML 解析异常 org.xml.sax.SAXParseException cvc-elt.1

java - 如何从 StateMachineConfigurer 创建 StateMachine

arrays - 改变 ArraySlice 会实例化一个新的数组实例吗?

arrays - 系统 verilog 约束中内部运算符的数组切片

Java - 递归 2D boolean 数组方法上不应该发生的 StackOverflow 错误

java - 我有 xml 文件的 Base64 内容。我想对其进行解码并将文件内容保存到字符串中,而不是保存在外部文件中

java - 如何在 Java 中将表的增量从数据库读取到 Kafka Producer?

java - 使用代码构建 HTML

将包含多个单词的字符串转换为字符数组