Android中的命名占位符

时间:2013-10-14 12:37:10

标签: android string-formatting

在我的Android应用程序中 在消息中,如果我给出消息“hi#name,欢迎您的用户名:#username和密码:#password”并在消息#name,#username,#password将被替换为从csv文件读取的值 它应该发送消息为例:“嗨praveen,欢迎您的用户名:neevarp和密码:12345” 这些值来自csv。搜索时我得到了一些链接

Named placeholders in string formatting

Map<String, String> values = new HashMap<String, String>();
values.put("value", x);
values.put("column", y);
StrSubstitutor sub = new StrSubstitutor(values, "%(", ")");
String result = sub.replace("There's an incorrect value '%(value)' in column # %(column)");

但在android

  

StrSubstitutor   class不存在我认为有没有办法实现这个

这是我从csv读取值并通过替换占位符来发送消息的代码

      public void sendingSms(String message, String file_path) {

    File file = new File("", file_path);

    // Read text from file

    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        int iteration = 0;
        while ((line = br.readLine()) != null) {
            if (iteration != 0) {

                StringBuilder text = new StringBuilder();

                text.append(line);
                String[] contact = text.toString().split(",");
                String phoneNumber = contact[4];
                String name = contact[1];
                String username = contact[2];
                String password = contact[3];
      //here i have to replace place holders with name,username,password values
                //message.replace("#name", name);
                //message.replace("#user", username);

                Toast.makeText(Message.this, "" + message,
                        Toast.LENGTH_SHORT).show();

                 SmsManager smsManager = SmsManager.getDefault();
                 smsManager.sendTextMessage(phoneNumber, null, message, null,
                 null);

            }
            iteration++;
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:1)

您应该使用Android提供的内置字符串格式来提供字符串资源:http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

答案 1 :(得分:0)

如果要设计自己的StrSubstitutor类,则需要将所需的功能内置到String类本身中。基本上使用Mapped值构建/设计foreach到函数中。

String result = inputString.replace(valueString, replacedValueString);

但我不知道您要求内置的功能。 Alex Fu还提供了替代方法,您可以通过它来处理字符串替换。