有时候我们为了用户方便查看某一数字,我们常常用分位显示,就是每隔几个数字用逗号隔开。
我们可以应用StringBuffer类中的方法实现:(我们习惯从后面开始分位)
1.insert();
该方法可以动态地向一个StringBuffer对象类型的字符串中指定位置插入指定字符串。
2.reverse();
该方法可以将字符串反转。
代码实现如下:
1.JavaBean:
StringUtil.java
package exa134;
public class StringUtil {
private long longValue; //要分位的数字
private int digit; //分位位数
private String formatStr; //分位后的字符串
public long getLongValue() {
return longValue;
}
public void setLongValue(long longValue) {
this.longValue = longValue;
}
public int getDigit() {
return digit;
}
public void setDigit(int digit) {
this.digit = digit;
}
public String getFormatStr() {
//将long类型的值转换为可动态修改的StringBuffer对象
StringBuffer sb = new StringBuffer(String.valueOf(longValue));
sb =sb.reverse(); //将字符串反转
int l = sb.length();
if(digit==0){ //如果分位位数为0,设置字符串的长度为分位位数
digit=l;
}
int count = 0;
/**计算出插入的分位符个数*/
if(l%digit==0)
count=l/digit-1;
else
count=l/digit;
for(int i= 0;i<count;i++){
sb =sb.insert((i+1)*digit+i ,",");//插入分位符
}
return sb.reverse().toString();
}
public void setFormatStr(String formatStr) {
this.formatStr = formatStr;
}
}
2.JSP文件:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="format.jsp" method="post">
<table>
<tr>
<td align="right">请输入数字:</td>
<td><input type="text" name="longValue" /></td>
</tr>
<tr>
<td align="right">请输入分位位数:</td>
<td><input type="text" name="digit" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="分位显示" /></td>
</tr>
</table>
</form>
</body>
</html>
format.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String longValueStr = request.getParameter("longValue");//获取表单中的长数字的字符串
String digit = request.getParameter("digit"); //获取分位位数字符串
long longValue = Long.parseLong(longValueStr); //将长数字的字符串转换为long类型
int d = Integer.parseInt(digit); //将分位位数字符串转换为int类型
%>
<!-- 使用useBean动作标签导入JavaBean对象 -->
<jsp:useBean id="strBean" class="exa134.StringUtil"></jsp:useBean>
<!-- 对StringUtil类的longValue属性赋值 -->
<jsp:setProperty property="longValue" name="strBean" value="<%=longValue %>"/>
<!-- 对StringUtil类的digit属性赋值 -->
<jsp:setProperty property="digit" name="strBean" value="<%=d %>"/>
<table>
<tr >
<td >分位之前的数字:</td>
<td align="left">
<jsp:getProperty property="longValue" name="strBean"/>
</td>
</tr>
<tr >
<td >分位之后的数字:</td>
<td align="left">
<jsp:getProperty property="formatStr" name="strBean"/>
</td>
</tr>
</table>
</body>
</html>
结果: