gpt4 book ai didi

java - 使用 MaskFormatter 格式化字符串抛出 "Invalid character"异常

转载 作者:行者123 更新时间:2023-12-04 09:10:52 25 4
gpt4 key购买 nike

我有一个函数,我需要将字符串设置为以下格式:#####-####-## 并用前导零填充。
例如:1234567 将变成 00001-2345-6798765432109 将变成 98765-4321-09我正在使用 MaskFormatter 并且我从文档中得到的印象是 A 表示任何字母或数字,并且 setPlaceHolderCharacter 将填充字符串。
我从技术上知道它用于文本字段,但希望我可以在后端功能中使用它,如果不是,我应该使用其他组件吗?
我在下面有这个代码,但是当它遇到 java.text.ParseException: Invalid character: 1 时它会抛出一个异常 mask.valueToString(ndc)

public class NdcFormatter implements MapFunction<Purchase, Purchase> {

private final String maskFormat = "AAAAA-AAAA-AA";
private final Character placeholder = '0';


@Override
public Purchase map(Purchase purchase) throws ParseException {
if(purchase != null){

String ndc = purchase.getNdc();
MaskFormatter mask = new MaskFormatter(maskFormat);
mask.setPlaceholderCharacter(placeholder);
String result = mask.valueToString(ndc);

purchase.setNdc(result);

}

return purchase;
}
}

最佳答案

以下是如何修复 java.text.ParseException: Invalid character: ... 中的 ERROR MaskFormatter 解决方案 错误在 valueToString 方法中,您必须添加以下代码行:

mask.setValueContainsLiteralCharacters(false);
但你会遇到这样的问题:
  • 当你设置 1234567 时,它​​会返回你 12345-6700-00
  • 要获得 00001-2345-67 你必须通过 00001234567

  • 所以你必须在格式化之前修复你的输入值。
    这是完整的代码:
    public class NdcFormatter implements MapFunction<Purchase, Purchase> {

    private final String maskFormat = "AAAAA-AAAA-AA";
    private final Character placeholder = '0';


    @Override
    public Purchase map(Purchase purchase) throws ParseException {
    if(purchase != null){

    String ndc = purchase.getNdc();
    MaskFormatter mask = new MaskFormatter(maskFormat);
    mask.setPlaceholderCharacter(placeholder);
    mask.setValueContainsLiteralCharacters(false);
    String result = mask.valueToString(ndc);

    purchase.setNdc(result);

    }

    return purchase;
    }
    }
    在这里自己填充前导零是一个简单的代码示例。
        if(ndc.length() < maskFormat.length()) {
    String pad = "0";
    for(int i = 0; i < maskFormat.length() -ndc.length() - 3; i++ ) {
    pad = pad + "0" ;
    }
    ndc = pad + ndc;
    }

    关于java - 使用 MaskFormatter 格式化字符串抛出 "Invalid character"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63356840/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com