付款金额的3分位Java算法实现


一、使用步骤

1.引入库

代码如下:

import java.util.ArrayList;
import java.util.List;

public class JavaTest {

    public static void main(String[] args) {

        List<String> strList=getSpilitStrList("1847519751890554548999");
        System.out.println(strList);

    }

      /**
     * 按8位长度进行字符串的分割输出,长度不足补0
     * @param srcStr
     * @return
     */
    public static String getSpilitStr(String srcStr){
        if ("".equals(srcStr.trim())){
            return null;
        }
        if (srcStr.length()>100){
            System.out.println("输入字符串过长!超过长度100");
            return null;
        }

        // helloworldiamwanzhongliao
        StringBuilder stringBuilder = new StringBuilder();
        boolean flag=false;
        String srcStrCopy=srcStr;
        int count=1;
        for (int i = 0; i < srcStr.length(); i++) {
            char charAt = srcStr.charAt(i);
            stringBuilder.append(charAt);
            if (flag){
                if (stringBuilder.toString().contains(" ")){
                    String[] strings = stringBuilder.toString().trim().split("\\s");
                    StringBuilder stringBuilder1 = new StringBuilder();
                    for (int k = 0; k < strings.length; k++) {
                        stringBuilder1.append(strings[k]);
                    }
                    int length = stringBuilder1.length();
                    if (length%8==0){
                        String substring = srcStrCopy.substring(count*8);
                        srcStr=substring;
                        i=-1;
                        stringBuilder.append(" ");
                        count++;

                        if (srcStr.length()/8<1){
                            StringBuilder stringBuilder4 = new StringBuilder();
                            stringBuilder4.append(srcStr);
                            for (int j = 0; j < 8-srcStr.length(); j++) {
                                stringBuilder4.append("0");
                            }
                            stringBuilder.delete(stringBuilder.toString().lastIndexOf(" "),stringBuilder.toString().length());
                            stringBuilder.append(" ");
                            stringBuilder.append(stringBuilder4.toString());
                            break;
                        }
                        continue;
                    }else {
                        if (srcStr.length()/8<1){
                            StringBuilder stringBuilder3 = new StringBuilder();
                            stringBuilder3.append(srcStr);
                            for (int j = 0; j < 8-srcStr.length(); j++) {
                                stringBuilder3.append("0");
                            }
                            stringBuilder.delete(stringBuilder.toString().lastIndexOf(" "),stringBuilder.toString().length());
                            stringBuilder.append(" ");
                            stringBuilder.append(stringBuilder3.toString());
                            break;
                        }
                    }
                }
            }else {
                if (stringBuilder.toString().length()%8==0){
                    String substring = srcStrCopy.substring(count*8);
                    srcStr=substring;
                    i=-1;
                    stringBuilder.append(" ");
                    count++;
                    flag=true;
                    continue;
                }else if (srcStrCopy.length()/8<1){
                    StringBuilder stringBuilder2 = new StringBuilder();
                    stringBuilder2.append(srcStrCopy);
                    for (int j = 0; j < 8-srcStrCopy.length(); j++) {
                        stringBuilder2.append("0");
                    }
                    return stringBuilder2.toString();
                }
            }
        }
        return stringBuilder.toString();
    }

    /**
     * 获取分割字符串集合
     * @return
     */
    public static List<String> getSpilitStrList(String srcStr){
        String spilitStr = getSpilitStr(srcStr);
        String[] splitStrArr = spilitStr.split("\\s");
        int length = splitStrArr.length;
        ArrayList<String> stringArrayList = new ArrayList<>();
        if (length>1){
            for (int i = 0; i < splitStrArr.length; i++) {
                if (i==splitStrArr.length-1){
                    if (splitStrArr[splitStrArr.length-1].startsWith("0")){
                        continue;
                    }
                }
                stringArrayList.add(splitStrArr[i]);
            }
        }else {
            stringArrayList.add(spilitStr);
        }

        return stringArrayList;
    }

}

注:把算法接口中的数字8改成3, 在写一个拼接字符串的算法可以实现对任何金额大小的逗号拆分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员是干活的

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值