当String包含'e'Java

时间:2017-04-11 11:56:09

标签: java bigdecimal

注意:当我是java编程的新手时,我问过这个问题。我有同样的解决方案;那时候自己。编辑以便其他读者清楚。

输入格式:输入为字符串格式。在我们的例子中,我们假设将仅包含数字的字符串转换为BigDecimal,其余部分可以忽略。

  

例如:我们希望 1e4 - > BigDecimal值将作为“10000”传递。那么,输入哪个   包含字母或任何其他特殊字符都可以忽略转换。

需求原因:我们需要根据搜索文本搜索数据库中的少数几列,并根据匹配条件检索行。让我们说列名(VarChar列),价格(十进制列),类型(VarChar列)。因此,如果搜索文本可以转换为BigDecimal,我们将搜索文本是否匹配任何其他列,如果它不能转换为BigDecimal,我们将搜索文本是否匹配其他两列。

在不进一步分析输入的情况下,我盲目地将搜索文本转换为BigDecimal。

示例:如果DB中的名称是1e3且price是10000而搜索文本是1e4,那么转换后的BigDecimal值1e4将匹配10000并将获取该行。

转换为BigDecimal的初始代码:

   BigDecimal textToBigDecimal = null;
    try
    {
       textToBigDecimal = new BigDecimal(searchText);
    }
    catch (NumberFormatException ignored)
    {
    }
    if (textToBigDecimal == null)
    {
      //criteria handling code.
    }
    else
    {
      //criteria handling code.
    }

跳过标准构造的代码。添加了try-catch,因为输入也可以是纯字符串。基于该标准,结构不同。

修改后的代码:

 BigDecimal textToBigDecimal = null;
    try
    {
      if (!searchText.contains("e") && !searchText.contains("E"))
      {
         textToBigDecimal = new BigDecimal(searchText);
      }
    }
    catch (NumberFormatException ignored)
    {
    }
    if (textToBigDecimal == null)
    {
      //criteria handling code.
    }
    else
    {
      //criteria handling code.
    }

注意:如果有任何疑问,请对此问题发表评论。我发布了这个问题,希望找到一个默认的java方法,它只将包含数字的字符串转换为BigDecimal,并为其余的字符串抛出异常。

1 个答案:

答案 0 :(得分:0)

如果您希望为'45e57'之类的字符串抛出异常,则可以在构造Long.parseLong("43e57")之前使用BigDecimal。它将抛出NumberFormatException