【问题标题】:how to read from file raw and use in String.format如何从文件中读取原始文件并在 String.format 中使用
【发布时间】:2018-01-13 21:51:51
【问题描述】:

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

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

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"); 

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

【问题讨论】:

  • 第一,我认为{0} {1} ... 不起作用,java 使用%d 表示数字,%s 表示字符串,第二,text loses its indentation 的人是什么?你能发布预期和实际输出吗?
  • 你为什么要使用文件? stackoverflow.com/a/20887690/2308683
  • 因为我的文字很大...

标签: android string string-formatting


【解决方案1】:

您提供的代码看起来更像 String.format,例如来自 C#Java 中的 String.format 不是这样工作的,它更像是 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");

【讨论】:

  • 其实Java确实支持...stackoverflow.com/questions/5324007/…
  • 括号里是否可以多次使用,我的意思是:String messageInput = "hello {0}, my name id {1}, my age is {0}"; MessageFormat.format(messageInput,"world", "josh");
  • @chaim 是的
【解决方案2】:

您可以将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();
}

【讨论】:

    【解决方案3】:

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

    还有一个变量需要,不可能赋值给同一个变量

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

    【讨论】:

      猜你喜欢
      • 2019-11-07
      • 2022-12-16
      • 2021-07-11
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多