Java字符串format-用户号补齐格式化应用

简介: Java字符串format-用户号补齐格式化应用

应用场景

在实际生产中,我们经常遇到这样的情况,就是类似生成用户号的标准化字符串。比如,生成一个以1开头,中间为0,后面递增的11位数字:10000000001、10000000002、10000000003……


生成这样的用户号的好处是格式统一,而且能够很清楚的看出此用户号的含义。比如以1开头的为用户号、以2开头的为企业号、以3开头的为商户号等等。


生成用户号后面的顺序数字有很多办法,比如采用数据库的自增属性,采用zookeeper的锁机制等等。但通过他们拿到的往往只是个顺序的数字,位数和前缀并不是逾期的格式。下面就简单介绍一下如何方面的将顺序数字生成标准格式的用户号。


实例

下面以生成用户号和商户号的实例具体说明:


package com;
/**
 * @author 二师兄
 * @date 2017/3/3
 */
public class Test {
    public static void main(String[] args) {
        Long num1 = 1024L;
        Long num2 = 2048L;
        System.out.println("用户号为:" + getUserNo(1,num1));
        System.out.println("企业号为:" + getUserNo(2,num2));
    }
    /**
     * 根据前缀和序列号生成用户号
     * @param preNumber 前缀
     * @param index 序列
     * @return
     */
    public static String getUserNo(int preNumber,Long index){
        return String.format("%d%010d",preNumber,index);
    }
}

打印结果为:


用户号为:10000001024

企业号为:20000002048

1

2

方法说明

很明显,上面的例子使用了String.format方法来格式化字符串,省去了各种判断比较拼接字符串的步骤,精简了代码。


String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。


String.format("%d%010d",preNumber,index)

1

(1)第一个%d代表整数类型(十进制),是preNumber的占位符,拼接字符串的时候会用preNumber的值进行替换。

(2)第二个%010d,前面第一个0代表:数字前面补0;后面的10代表字符总长度为10,d代表整数类型。这个表达式的整体含义就是,用index的值来替换此处表达式,如果index的长度不足10位,则在index的前面用0补齐。


通过以上方法,可以轻易的生成一个其他类似的指定格式的字符串。发挥你的想象力吧。



目录
相关文章
|
1天前
|
Java
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
|
1天前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
1天前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
1天前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
|
1天前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
|
1天前
|
Java Serverless API
Java 后台开发的新趋势与应用
Java 后台开发的新趋势与应用
14 2
|
1天前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
|
1天前
|
前端开发 Java 应用服务中间件
Java应用结构规范问题之dal层实现对数据源的操作的问题如何解决
Java应用结构规范问题之dal层实现对数据源的操作的问题如何解决
|
2天前
|
Java
Java 并发编程:理解并应用 ReentrantLock
【7月更文挑战第56天】 在多线程环境下,为了保证数据一致性和程序正确性,我们需要对共享资源进行同步访问。Java提供了多种并发工具来帮助我们实现这一目标,其中ReentrantLock是一个功能强大且灵活的同步机制。本文将深入探讨ReentrantLock的基本原理、使用方法以及与synchronized关键字的区别,帮助读者更好地理解和应用这一重要的并发编程工具。
|
2天前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
10 1