如何从原始文件中读取并在 String.format 中使用

how to read from file raw and use in String.format

我想从原始文件中读取数据并替换文本中的格式。

例如...在这样的原始文件中:

hello {0}, my name id {1}, my age is {2}....

当我使用 String.format 时,如下所示,文本失去了缩进。

String data = readTextFile(this, R.raw.input);
data = String.format(data, "world", "josh", "3"); 

有谁知道如何在不丢失缩进的情况下做到这一点?

您提供的代码看起来更像 String.format 例如来自 C#. String.format in Java 的代码不能这样工作,它更像 printf。

您可以像这样操纵您的输入。

String input = "hello %s, my name id %s, my age is %s";
String.format(input, "world", "josh", "3");

输出: hello world, my name id josh, my age is 3

缩进应该相同

编辑

如果您想使用括号,您可以使用 MessageFormat.format 而不是 String.format

String messageInput = "hello {0}, my name id {1}, my age is {2}";
MessageFormat.format(messageInput,"world", "josh", "3");

您可以将 Regular Explessions 与这样的模式一起使用:"{/d++}":

String format (String input, String... args) {
    Pattern p = Pattern.compile("{/d++}");
    String[] parts = p.split(input);
    StringBuilder builder = new StringBuilder("");
    int limit = Math.min(args.length, parts.length);
    for(int i = 0; i < limit; i++){
        builder.append(parts[i]).append(args[i]);
    }
    return builder.toString();
}

我找到了解决问题的方法。

需要多一个变量,不能赋值给同一个变量

String data = readTextFile(this, R.raw.input);
String output = String.format(data, "world", "josh", "3");