java 定长报文补位问题

项目中遇到定长报文左对齐右补位需求,原算法存在漏洞,如未处理字符串长度大于等于目标长度、字符字节数问题及效率低下。改进后的算法完善了这些问题,包括考虑了无需补位的情况,根据ASCII码处理汉字字节数,并通过StringBuffer减少内存消耗。Java中的string.length()对于汉字仅计为1字节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目开发遇到问题描述:
需求是要实现定长报文的 左对齐右补位 的操作。于是项目组的同事们就写了这样的算法。
算法1

public String padRight(String orgStr,int len,String aliStr){
    int length=orgStr.length();
    for(int i=0;i<len-length;i++){
        orgStr+=aliStr;
    }
    return orgStr;
}`

分析:此段代码只能说是大概实现了该功能,漏洞如下
1 没有考虑 orgStr.length()>=len 的情况。
2 没有考虑 英文数字是一个字节,汉字占两个字节的问题
3 效率底下,使用orgStr+=aliStr,在java中这么写每次都会在内存中创建新的对象。低效的做法不值得提倡。

改进后的算法如下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值