Android开发:String.format() 详解 (string的高级用法)

目录

原文链接:https://blog.csdn.net/android157/article/details/112448721

 

一、问题

二、解决

2.1、例1:“我叫小五,今年23岁了,毕业于家里蹲,目前就职于老牛公司,薪资9000”。

2.2、例二:“我叫小五,今年23岁了,毕业于家里蹲,目前就职于老牛公司,薪资9000.00”。

三、扩展

3.1、重载方法

 3.2、占位符

 3.3、对字符、字符串进行格式化

 3.4、对整数进行格式化

 3.5、对浮点数进行格式化

 3.6、对日期、时间进行格式化

3.7、转换符汇总

3.8、标识汇总

3.9、日期转换符

3.10、时间转换符


 

一、问题

在实际开发过程中会有如下的业务:在一个Textview需要显示”我叫xxx,今年xxx岁了,毕业于xxx,目前就职于xxx,薪资xxx” 。
其中的 xxx 是变化的, 每个用户也是不一样的 。
作为老司机的你,遇到这种情况会怎么样解决呢?写多个TextView  ,分别进行赋值吗?这样做的话,怎么能担负得起老司机的称号呢?我们应该遵循Google的开发模式,通过string和String.format()搭配,来实现这一需求。接下来,上车,系好安全带,发车喽~

 

二、解决

2.1、例1:“我叫小五,今年23岁了,毕业于家里蹲,目前就职于老牛公司,薪资9000”。

在string.xml中可以这样写:

<resources>
     <string name="old">我叫%s,今年%d岁了,毕业于%s,目前就职于%s,薪资%.0f</string>
</resources>

在业务代码中这样写:

        LineTextView lineTextView = findViewById(R.id.lineTextView);
        String formatStr = getResources().getString(R.string.old);
        lineTextView.setText(String.format(formatStr, "小五", 23, "家里蹲", "老牛公司", 9000.0));

然后,我们进行分析。

我叫小五,今年23岁了,毕业于家里蹲,目前就职于老牛公司,薪资9000” ,

首先,把这句话中的变量找出来,分别是“小五”、“23”、“家里蹲”、“老牛公司”、“9000”,这些是我要实时变化的变量。和业务相关,这里我暂定以上5个关键词为变量。

下一步, 区分变量的类型,我这五个变量中有字符串类型(小五 、家里蹲、老牛公司)、整型(23)、和浮点型(9000)。

第三步,用占位符表示变量,%s表示字符串、%d表示整型、%f表示浮点型,重新组装句子为:“我叫%s,今年%d岁了,毕业于%s,目前就职于%s,薪资%f”。

第四步,使用String.format(String format, Object... args)进行格式化,填充内容String.format(“我叫%s,今年%d岁了,毕业于%s,目前就职于%s,薪资%f”, "小五", 23, "家里蹲", "老牛公司", 9000.0) ,第一个“%s”对应“小五”,第二个“%d”对应23,第三个“%s”对应“家里蹲”,第四个“%s”对应“老牛公司”,第五个“%f”对应9000.0,将实参和占位符形参对应上就可以了。

 

2.2、例二:“我叫小五,今年23岁了,毕业于家里蹲,目前就职于老牛公司,薪资9000.00”。

例二 和 例一  的区别就在于薪资的小数点位数,来看看实现两位小数点该怎么写。

在string.xml中可以这样写:

<resources>
     <string name="old">我叫%s,今年%d岁了,毕业于%s,目前就职于%s,薪资%.2f</string>
</resources>

在业务代码中这样写:

        LineTextView lineTextView = findViewById(R.id.lineTextView);
        String formatStr = getResources().getString(R.string.old);
        lineTextView.setText(String.format(formatStr, "小五", 23, "家里蹲", "老牛公司", 9000.0));

然后,我们进行分析。

细心的你是否已经发现了两者的不同,其实差别只有一点点,在string的语句中 ,例一是这样写的“薪资%.0f”,例二是这样写的“薪资%.2f”。没错,“.”后面的数字代表的就是要保留小数位数,聪明的你学会了吗?

三、扩展

3.1、重载方法

// 使用本地语言(Locale.getDefault())格式化字符串
String String.format(String fmt, Object... args);
 
// 自定义语言环境格式化字符串
String String.format(Locale locale, String fmt, Object... args);

 3.2、占位符

占位符完整格式为: %[index$][标识][最小宽度][.精度]转换符 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值