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

Posted

技术标签:

【中文标题】如何从文件中读取原始文件并在 String.format 中使用【英文标题】:how to read from file raw and use in 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 的人是什么?你能发布预期和实际输出吗? 你为什么要使用文件? ***.com/a/20887690/2308683 因为我的文字很大... 【参考方案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确实支持...***.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");

【讨论】:

以上是关于如何从文件中读取原始文件并在 String.format 中使用的主要内容,如果未能解决你的问题,请参考以下文章

如何从文件中读取数据并在 QT 的 QEditText 框中显示

从android上的wav文件中读取原始数据

如何从 servlet-filter 写入文件并在 Eclipse 中读取它?

如何从文件中读取输入并在 sqlplus 查询中使用它?

如何从流中读取 CSV 文件并在写入时处理每一行?

我如何从网络托管机器人上的不和谐聊天中读取 txt 文件中的原始文本