GWT中的字符串格式化程序

unj*_*nj2 37 java gwt

如何在GWT中格式化我的字符串?

我做了一个方法

  Formatter format = new Formatter();
    int matches = 0;
    Formatter formattedString = format.format("%d numbers(s, args) in correct position", matches);
    return formattedString.toString();
Run Code Online (Sandbox Code Playgroud)

但它抱怨道

Validating newly compiled units
   [ERROR] Errors in 'file:/C:/Documents%20and%20Settings/kkshetri/workspace/MasterMind/MasterMind/src/com/kunjan/MasterMind/client/MasterMind.java'
      [ERROR] Line 84: No source code is available for type java.util.Formatter; did you forget to inherit a required module?
Run Code Online (Sandbox Code Playgroud)

不包括Formatter吗?

Jos*_*ust 34

请参阅GWT日期和数字格式的官方页面.

他们建议如下:

myNum decimal = 33.23232;
myString = NumberFormat.getFormat("#.00").format(decimal);
Run Code Online (Sandbox Code Playgroud)

最好使用他们支持的优化方法,而不是制作自己的非最佳方法.他们的编译器最终会优化它们到几乎相同的东西.


yeg*_*256 22

GWT 2.1+中String.format()的一个非常简单的替换:

import com.google.gwt.regexp.shared.RegExp;
import com.google.gwt.regexp.shared.SplitResult;

public static String format(final String format, final Object... args) {
  final RegExp regex = RegExp.compile("%[a-z]");
  final SplitResult split = regex.split(format);
  final StringBuffer msg = new StringBuffer();
  for (int pos = 0; pos < split.length() - 1; ++pos) {
    msg.append(split.get(pos));
    msg.append(args[pos].toString());
  }
  msg.append(split.get(split.length() - 1));
  return msg.toString();
}
Run Code Online (Sandbox Code Playgroud)


Pac*_*ace 21

更新:在进一步查看此答案之前,请参阅(并投票通过)Joseph Lust的帖子.

根据这篇文章看起来不包括格式化程序.但是,他们提出了一些替代方案

  • 值得一提的还有`NumberFormat`和`DateTimeFormat`. (5认同)

小智 5

甚至更简单,不使用RegExp,只使用字符串:

public static String format(final String format, final String... args) {
    String[] split = format.split("%s");
    final StringBuffer msg = new StringBuffer();
    for (int pos = 0; pos < split.length - 1; pos += 1) {
        msg.append(split[pos]);
        msg.append(args[pos]);
    }
    msg.append(split[split.length - 1]);
    return msg.toString();
 }
Run Code Online (Sandbox Code Playgroud)

  • `for`循环中的`pos + = 1`?真? (3认同)