Java 我 : easiest way to format strings?

标签 java java-me string-formatting

在 Java ME 中,我需要做一个简单的字符串替换: String.format("This string contains placeholders %s %s %s", "first", "second", "third");
占位符不必位于字符串的末尾:

String.format ("Your name is %s and you are %s years old", "Mark", "18");

但是,据我所知,String.format 方法在 j2me 中不可用。有什么替代方法?如何在不编写自己的函数的情况下实现简单的字符串格式化?

最佳答案

你在这里运气不好,Java ME 的 API 非常有限,所以你必须为此编写自己的代码。

像这样:

public class FormatTest {

  public static String format(String format, String[] args) {
    int argIndex = 0;
    int startOffset = 0;
    int placeholderOffset = format.indexOf("%s");

    if (placeholderOffset == -1) {
        return format;
    }

    int capacity = format.length();

    if (args != null) {
        for (int i=0;i<args.length;i++) {
            capacity+=args[i].length();
        }
    }

    StringBuffer sb = new StringBuffer(capacity);

    while (placeholderOffset != -1) {
        sb.append(format.substring(startOffset,placeholderOffset));

        if (args!=null && argIndex<args.length) {
            sb.append(args[argIndex]);
        }

        argIndex++;
        startOffset=placeholderOffset+2;
        placeholderOffset = format.indexOf("%s", startOffset);
    }

    if (startOffset<format.length()) {
        sb.append(format.substring(startOffset));
    }

    return sb.toString();
  }

  public static void main(String[] args) {
    System.out.println(
      format("This string contains placeholders %s %s %s ", new String[]{"first", "second", "third"})
    );
  }
}

关于Java 我 : easiest way to format strings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7738329/

相关文章:

java - 如何获取listactivity中被点击的布局项?

java - 仅当没有 Exception 映射时,才会调用 @ExceptionHandler for Error

java - 如何为我的整个框架或对话框使用字体样式?

python - 使用列表调用格式函数

java - 如何处理 Selenium 中的多个警报弹出确认?

java - 使用 J2se 进行电话

Java Micro Edition (J2ME) - 从记录存储中删除元素

java - J2ME读取手机内存和内存卡文件的方法

c# - 使用 string.Format ("{0:00}"格式化字符串

c - printf 的参数用作格式说明符的参数