StringUtils.isNumeric
时间: 2024-06-09 20:11:08 浏览: 136
StringUtils.isNumeric是一个方法,用于判断传入的字符串是否为正整数。根据引用中的代码展示,该方法返回true的情况有:传入的字符串为正整数"123"或者零"0";返回false的情况有:传入的字符串为负整数"-123"、小数"1.23"、null、空格、空字符串或者数字带空格"1 2 3"。而StringUtils.isNumericSpace是另一个方法,同样用于判断传入的字符串是否为正整数,但不考虑字符串中的空格。根据引用中的代码展示,该方法的返回结果与StringUtils.isNumeric相比,对于空格的处理方式不同。如果字符串只包含空格,空字符串或者数字带空格,方法会返回true。
相关问题
switch (productType) { case FUTURE: if (contractId.length() == 6 && !StringUtils.isNumeric(String.valueOf(contractId.toCharArray()[1]))) { symbol = contractId.substring(0, 2) + contractId.substring(3) + PMPConstants.SYMBOL_DOT + exchange; } break; case STOCK: if (ExchangeEnum.HK.equals(ExchangeEnum.ofInner(exchange)) && contractId.length() > 4 && StringUtils.startsWith(contractId, "0")) { symbol = contractId.substring(1) + PMPConstants.SYMBOL_DOT + exchange; } break; default: symbol = contractId + PMPConstants.SYMBOL_DOT + exchange; }为什么不进default
根据您提供的代码片段,可以看出在switch语句中,当`productType`既不是`FUTURE`也不是`STOCK`时,应该进入`default`分支。但是,如果在上述两个`case`中的某个情况下,`symbol`已经被赋值了,那么程序将不会进入`default`分支。
这是因为一旦在`case`分支中的条件满足时,程序会执行相应的代码块,并跳出`switch`语句。所以如果在`FUTURE`或`STOCK`的情况下已经赋值了`symbol`,则不会进入`default`分支。
如果您希望在未匹配到任何`case`时进入`default`分支并设置`symbol`的值,可以将相应的条件检查移到外部,或者使用一个标记来判断是否已经进入了某个`case`分支。
例如,可以尝试以下修改:
```java
boolean isMatched = false; // 添加一个标记来表示是否匹配到合适的条件
switch (productType) {
case FUTURE:
if (contractId.length() == 6 && !StringUtils.isNumeric(String.valueOf(contractId.toCharArray()[1]))) {
symbol = contractId.substring(0, 2) + contractId.substring(3) + PMPConstants.SYMBOL_DOT + exchange;
isMatched = true;
}
break;
case STOCK:
if (ExchangeEnum.HK.equals(ExchangeEnum.ofInner(exchange))
&& contractId.length() > 4 && StringUtils.startsWith(contractId, "0")) {
symbol = contractId.substring(1) + PMPConstants.SYMBOL_DOT + exchange;
isMatched = true;
}
break;
}
if (!isMatched) {
symbol = contractId + PMPConstants.SYMBOL_DOT + exchange;
}
```
这样可以确保如果没有匹配到任何`case`分支时,会进入`default`分支并设置`symbol`的值。
希望这可以回答您的问题。如果您有任何进一步的疑问,请随时提问。
这段代码什么意思public String turnIdNo(String idNoBef) { if (StringUtils.isBlank(idNoBef)) { BusinessException.throwBusinessException(MsgCodeEnum.ID_NO_TURN_FAIL); } String idNoAft = null; if (idNoBef.length() == 18) { idNoAft = idNoBef.substring(0, 6) + idNoBef.substring(8, 17); } else if (idNoBef.length() == 15) { if(!StringUtils.isNumeric(idNoBef)){ return idNoBef; } idNoAft = turnFifteenIdNoToEighteen(idNoBef); } else { BusinessException.throwBusinessException(MsgCodeEnum.ID_NO_TURN_FAIL); } if(JudgeUtils.isNull(idNoAft)){ BusinessException.throwBusinessException(MsgCodeEnum.ID_NO_TURN_FAIL); } return idNoAft.toUpperCase(); }
这段代码是一个Java方法,名为`turnIdNo`,它的作用是将身份证号码进行转换。
首先,它会判断传入的`idNoBef`是否为空或者为空字符串。如果是空的话,就会抛出一个业务异常。这里使用了`StringUtils.isBlank`方法来进行判断。
然后,它会定义一个变量`idNoAft`并初始化为`null`。
接下来,它会判断`idNoBef`的长度。如果长度为18,就会截取其中的一部分字符,然后将其赋值给`idNoAft`。具体来说,它会取出`idNoBef`的前6个字符和第8到第17个字符,然后将它们拼接在一起。
如果`idNoBef`的长度为15,它会进一步判断其中是否包含非数字的字符。如果包含非数字的字符,就直接返回原始的`idNoBef`。否则,它会调用另一个名为`turnFifteenIdNoToEighteen`的方法,将15位的身份证号码转换为18位,并将结果赋值给`idNoAft`。
如果`idNoBef`的长度既不是18也不是15,它同样会抛出一个业务异常。
最后,它会判断`idNoAft`是否为空。如果为空,就会抛出一个业务异常。
最后,它会将`idNoAft`转换为大写字母并返回。
总的来说,这段代码的目的是将身份证号码进行转换,并返回转换后的结果。转换规则是根据输入的身份证号码的长度来确定。
阅读全文