日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java 数组用字符做下表_JAVA字符串json数组使用Formatter格式化成表格形式

發布時間:2023/12/19 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 数组用字符做下表_JAVA字符串json数组使用Formatter格式化成表格形式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求:一個json數組,要將其解析排成表格的形式,如下:

參考這個博客:https://blog.csdn.net/weixin_33778544/article/details/91427507

但這個博客沒有提供名稱太長時自動換行的代碼,這里把所有代碼貼出:

兩個bean類:

/**

* Copyright 2019 bejson.com

*/

package com.qugengting.fuck;

import java.util.List;

/**

* Auto-generated: 2019-11-15 8:50:28

*

* @author bejson.com (i@bejson.com)

* @website http://www.bejson.com/java2pojo/

*/

public class PrintBean {

private String orderId;

private Listbill;

private String total;

private String fee;

private String payType;

private String orderUuid;

public String getOrderUuid() {

return orderUuid;

}

public void setOrderUuid(String orderUuid) {

this.orderUuid = orderUuid;

}

public String getPayType() {

return payType;

}

public void setPayType(String payType) {

this.payType = payType;

}

public void setOrderId(String orderId) {

this.orderId = orderId;

}

public String getOrderId() {

return orderId;

}

public void setBill(Listbill) {

this.bill = bill;

}

public ListgetBill() {

return bill;

}

public void setTotal(String total) {

this.total = total;

}

public String getTotal() {

return total;

}

public void setFee(String fee) {

this.fee = fee;

}

public String getFee() {

return fee;

}

}

/**

* Copyright 2019 bejson.com

*/

package com.qugengting.fuck;

/**

* Auto-generated: 2019-11-15 8:48:56

*

* @author bejson.com (i@bejson.com)

* @website http://www.bejson.com/java2pojo/

*/

public class Bill {

private String name;

private String price;

private String totalPrice;

private String count;

public void setName(String name) {

this.name = name;

}

public String getName() {

return name;

}

public void setPrice(String price) {

this.price = price;

}

public String getPrice() {

return price;

}

public void setTotalPrice(String totalPrice) {

this.totalPrice = totalPrice;

}

public String getTotalPrice() {

return totalPrice;

}

public void setCount(String count) {

this.count = count;

}

public String getCount() {

return count;

}

}

private String data = "{\n" +

" \"orderId\": \"eaedfa0001\",\n" +

" \"total\": \"100\",\n" +

" \"payType\": \"支付寶\",\n" +

" \"orderUuid\": \"565656786343555e\",\n" +

" \"bill\": [\n" +

" {\n" +

" \"name\": \"XXX即熱式抗菌智能坐便器AP(限時促銷)\",\n" +

" \"price\": \"10000\",\n" +

" \"totalPrice\": \"30000\",\n" +

" \"count\": \"3\"\n" +

" }\n" +

" ],\n" +

" \"fee\": \"100.00\"\n" +

"}";

private void print(String data) {

PrintBean bean = new Gson().fromJson(data, PrintBean.class);

Listbeans = bean.getBill();

Bill bill = new Bill();

bill.setName("名稱");

bill.setPrice("單價");

bill.setCount("數量");

bill.setTotalPrice("總價");

beans.add(0, bill);

Bill bill1 = new Bill();

bill1.setName("總金額");

bill1.setPrice("");

bill1.setCount("");

bill1.setTotalPrice(bean.getTotal());

beans.add(bill1);

Bill bill2 = new Bill();

bill2.setName("優惠后總價");

bill2.setCount("");

double d1 = Double.valueOf(bean.getTotal());

double d2 = Double.valueOf(bean.getFee());

double d3 = d1 - d2;

bill2.setPrice("");

bill2.setTotalPrice(String.valueOf(d3));

beans.add(bill2);

printList(beans);

}

/**

* 獲取中文數量

*

* @param val

* @return

*/

private int getChineseNum(String val) {

if (val == null) {

val = "null";

}

String regex = "[\u4e00-\u9fa5|。|,]";

ArrayListlist = new ArrayList();

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(val);

while (matcher.find()) {

list.add(matcher.group());

}

int size = list.size();

return size;

}

private int mNameWidth = 13;

private int mNameBigWidth = 25;

private int mPriceBigWidth = 8;

private int mCountBigWidth = 7;

private int mAllPriceBigWidth = 8;

private void printList(Listlist) {

StringBuilder sb = new StringBuilder();

for (Bill bill : list) {

//1、先處理商品名稱

int strLength = bill.getName().length();

int index = 0;

StringBuilder stringBuilder = new StringBuilder();

for (int i = 0; i < strLength; i++) {

index++;

stringBuilder.append(bill.getName().charAt(i));

if (index % mNameWidth == 0) {

stringBuilder.append("\n");

}

}

//有換過行情況下

if (stringBuilder.toString().contains("\n")) {

String[] strings = stringBuilder.toString().split("\n");

//最后一行處理下長度

String lastLineStr = strings[strings.length - 1];

int chineseNum = getChineseNum(lastLineStr);

Formatter formatter = new Formatter();

String val = formatter.format("%-" + (mNameBigWidth - chineseNum) + "s", lastLineStr).toString();

//重新拼接

for (int i = 0; i < strings.length; i++) {

if (i != strings.length - 1) {

sb.append(strings[i] + "\n");

} else {

sb.append(val);

}

}

} else {//只有一行

int chineseNum = getChineseNum(bill.getName());

Formatter formatter = new Formatter();

String val = formatter.format("%-" + (mNameBigWidth - chineseNum) + "s", bill.getName()).toString();

sb.append(val);

}

//2、再處理單價

Formatter formatter = new Formatter();

int chineseNum = getChineseNum(bill.getPrice());

String val = formatter.format("%-" + (mPriceBigWidth - chineseNum) + "s", bill.getPrice()).toString();

sb.append(val);

//3、再處理數量

Formatter formatter1 = new Formatter();

int chineseNum1 = getChineseNum(bill.getCount());

String val1 = formatter1.format("%-" + (mCountBigWidth - chineseNum1) + "s", bill.getCount()).toString();

sb.append(val1);

//4、再處理總價

Formatter formatter2 = new Formatter();

int chineseNum2 = getChineseNum(bill.getTotalPrice());

String val2 = formatter2.format("%-" + (mAllPriceBigWidth - chineseNum2) + "s", bill.getTotalPrice()).toString();

sb.append(val2);

sb.append("\n");

}

System.out.println(sb.toString());

}

@Test

public void test1() {

print(data);

}

執行test1(),即可得出以上截圖效果。

總結

以上是生活随笔為你收集整理的java 数组用字符做下表_JAVA字符串json数组使用Formatter格式化成表格形式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。