Android字符串格式化
转自 http://blog.csdn.net/aqi00/article/details/49997843
字符串的格式化
博主原来是搞C的,C里面有sprintf来格式化字符串,后来转到java变傻了,拼接String只会用n个“+”,要么就是用StringBuilder的append方法,但要是遇上把数字格式化的情况(比如左补0等等),就只能傻乎乎的if else判断该补几个0。
后来终于有一天,博主发现原来java也有格式化的函数(jdk1.5就提供了),就是String.format(String format, Object... args),用法跟C差不多,只是转换符有些区别。这下可算是从苦逼的if else中解脱出来了,下面就记录几个常用的格式转换符:
%s : 字符串,如"hello"
%c : 字符,如'a'
%b : 布尔类型,如true或者false
%d : 十进制整型数,如119
%x : 十六进制整型数,如f0
%f : 十进制浮点数,java在这里不像c有%f/%lf/%ld等区分浮点与双精度,java的float类型和double类型都用%f
%0nd : n是十进制整数,表示这里占着n位数字,位数如不足n则左补0
字符串转数字类型
前面格式化说的是各种类型的数据格式化成字符串,那有时又需要把字符串转成数字类型,其实也很简单,字符串转整型用Integer.parseInt(String s),字符串转浮点数用Double.parseDouble(String s)。
现在还有个比较常用的情况,就是转换浮点数时需要保留小数点后面一位或者后面两位。如果仅仅是取整,有现成的数学函数如四舍五入Math.round、向上取整Math.ceil、向下取整Math.floor,就是没有现成的保留多少位的函数,这时自己要做下处理了,处理的办法有如下五种:
1、使用String.format;
2、使用Formatter;
3、使用BigDecimal;
4、使用DecimalFormat;
5、使用NumberFormat;
示例如下:
public static String formatWithString(double value, int digit) { String format = String.format("%%.%df", digit); return String.format(format, value).toString();
} public static String formatWithFormatter(double value, int digit) { String format = String.format("%%.%df", digit); return new Formatter().format(format, value).toString();
} public static String formatWithBigDecimal(double value, int digit) { BigDecimal bd = new BigDecimal(value); bd = bd.setScale(digit, RoundingMode.HALF_UP); return bd.toString();
} public static String formatWithDecimalFormat(double src, int digit) { String pre_format = String.format(".%%0%dd", digit); String format = String.format(pre_format, 0); DecimalFormat df = new java.text.DecimalFormat(format); //".00" df.setRoundingMode(RoundingMode.HALF_UP); String value = df.format(src); return value;
} public static String formatWithNumberFormat(double value, int digit) { NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(digit); nf.setMinimumFractionDigits(digit); nf.setRoundingMode(RoundingMode.HALF_UP); // 如果想输出的格式用逗号隔开,可以设置成true nf.setGroupingUsed(false); return nf.format(value);
}
字符串的合法验证
app经常要检查用户输入信息是否正确,例如手机号是否合法、电子邮箱是否合法、身份证号是否合法等等。这种合法性验证就得用到正则表达式,对应到具体的处理类,便是Pattern和Matcher。Pattern是预定义校验规则,而Matcher则是进行校验判断;另外,从java1.4开始,对于简单的格式校验,也可直接调用String类的matches方法。常用的字符串校验场景与相应的示例代码如下:
public static boolean isPhoneByPattern(String phone) { String regex = "^1[3|4|5|8]\\d{9}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(phone); return matcher.matches(); } public static boolean isPhoneByString(String phone) { // "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 String regex = "[1][358]\\d{9}"; return phone.matches(regex); } public static boolean isEmailByPattern(String email) { String regex = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(email); return matcher.matches(); } public static boolean isEmailByString(String email) { String regex = "([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)"; return email.matches(regex); } public static boolean isICNOByPattern(String icno) { String regex15 = "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$"; Pattern pattern15 = Pattern.compile(regex15); Matcher matcher15 = pattern15.matcher(icno); String regex18 = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|x|X)$"; Pattern pattern18 = Pattern.compile(regex18); Matcher matcher18 = pattern18.matcher(icno); return (matcher15.matches() || matcher18.matches()); } public static boolean isICNOByString(String icno) { String regex15 = "[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}"; String regex18 = "[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|x|X)"; return (icno.matches(regex15) || icno.matches(regex18)); }
Android字符串格式化相关推荐
- Android 字符串格式化 千位符
Android 字符串格式化 千位符 字符串格式化工具类 千位符 & 千位符保留小数点后两位 import java.text.DecimalFormat; import java.text. ...
- android 字符串格式化
Google在设计Android时遵守了大量MVC架构方式,可以让写公共代码.美工和具体逻辑开发人员独立出来.有关Android 的资源文件values/strings.xml中如何实现格式化字符串呢 ...
- Java字符串格式化
原文出处:http://blog.csdn.net/lonely_fireworks/article/details/7962171/ 相关阅读 Java基础:String类 Java字符串格式化 J ...
- android 字符串,textview
Android - CharSequence和String的比较和转换 Android自定义TextView边框颜色(动态改变边框颜色以及字体颜色) Android TextView加中划线,下划线 ...
- Java字符串格式化详解
在 Java 的 String 类中,可以使用 format() 方法格式化字符串,该方法有两种重载形式: String.format(String format, Object- args) 和 S ...
- python 字符串格式化是打印不同类型更简单一些
Python 支持格式化字符串的输出 与 C 中 sprintf 函数一样的语法 下面写3中不同类型的数据合在一起打印 name = "张三丰" height = 1.88 wei ...
- python格式化字符串_Python的3种字符串格式化方法,哪种你最喜欢?
文末扫二维码领[Python开源项目包] 赠书×大厂笔面试题:秋招一直当炮灰?提升你实力的机会来了! 黄伟呢 | 作者数据分析与统计学之美 | 来源 1 3种字符串格式化工具的简单介绍 python2 ...
- python字符串格式化之学习笔记
在python中格式化输出字符串使用的是%运算符,通用的形式为 •格式标记字符串 % 要输出的值组 其中,左边部分的"格式标记字符串"可以完全和c中的一致.右边的'值组'如果有两个 ...
- python字符串的美化_python字符串格式化
Python的字符串格式化有两种方式:%格式符方式,format方式 %格式符 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定 ...
最新文章
- GPU服务器选购指南-思腾合力篇
- 物联网:企业需要面临七大风险
- DB2日志传送基础知识简介
- 一个已经存在 10 年,却被严重低估的库
- [c#菜鸟]lambda表达式
- 浮栅场效应管 符号_场效应管主要参数与特点,场效应管与其他管子的对比
- VS2010连接MySql数据库时无法选择mysql database数据源
- 视觉SLAM笔记(27) 非线性最小二乘
- 数据库:mongodb与关系型数据库相比的优缺点zz (转)
- java jdbc元数据_JDBC元数据详解
- 创建包含法定节假日、工作日、周末的日历表(mysql、oracle通用)
- 【时间序列】多变量时间序列异常检测数据集整理及标准化处理代码合集
- 双目摄像机测深度原理
- 计算机维修与数据恢复论文,备份恢复论文,关于计算机数据备份数据恢复技术相关参考文献资料-免费论文范文...
- HOJ 2706 Key Task
- linux windows文件 编码_解决Linux与Windows文件显示乱码的问题
- 微信小程序(小程序的生命周期)
- 奥运五环-web前端
- 什么是BOM(Byte Order Mark)?
- 全国2010年1月电子商务与电子政务试题
热门文章
- ACM-ICPC 2021 亚洲区域赛 昆明站
- 解决 zbrush导出的模型在blender里没有颜色的问题
- 数据分析 - 美国金融科技公司Prosper的风险评分分析
- 托福高频真词List13 // 附托福TPO阅读真题
- HEVC学习(二十八) —— 量化之二
- Minecraft 1.12.2模组开发(十八) 自定义附魔
- java生成迷宫_java怎么生成迷宫地图
- 影视剪辑,自学剪辑的转场与准则,掌握一门剪辑技能
- 设计模式----装饰模式(JAVA)
- ios 页面即将消失_20个即将推出的页面介绍及如何正确处理它们