0

在 C# 中有一种将字符串写入控制台的方法。

这是Console.WriteLine("Hello {0} My name is {1}", "World", "John");

这将返回

Hello World My name is John

我如何在java中重新创建这样的方法结构。这样我就可以在我的方法结束时传入无限数量的参数并将其放置在正确的索引中?

任何帮助将不胜感激

// 编辑

也许我解释得不够好。我不需要制作控制台输出的方法。我只想知道如何重新创建一个结构,我可以在其中传递任意数量的参数并将其放置在正确的位置。例如

movie.setPlot("这部电影是 {0},评分为 {1}", "FUN", "6 Thumbs up");

这会将电影的情节变量设置为

This movie is FUN and gets a rating of 6 Thumbs up

// 编辑 2

最终结果:

private static final String PREFIX = "AwesomeApp";

    public static void e(String TAG, String msg){
        android.util.Log.e(PREFIX + "  >> " +TAG,  msg);
    }

    public static void e(String TAG, String msg, Object...args){
        e(TAG, String.format(msg, args));
    }
4

2 回答 2

3

您可以使用var-args来处理不确定数量的参数:

void setPlot(String text, String... args) {
   System.out.printf(text, args);
}
于 2012-12-20T21:41:40.173 回答
1

您可以使用FormatterJava 5 中引入的类,如下所示:

Formatter f = new Formatter();
f.format("Hello %s my name is %s", "World", "John");
System.out.println(f.toString());

编辑:(响应问题的编辑)您可以在您自己的自定义方法的实现中使用格式化程序,如下所示:

private String plot;

void setPlot(String formatStr, Object... data) {
    Formatter f = new Formatter();
    format(formatStr, data);
    plot = f.toString();
}

您现在可以setPlot像这样调用您的函数:

movie.setPlot("This movie is %s and gets a rating of %s", "FUN", "6 Thumbs up");
于 2012-12-20T21:42:23.190 回答