You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中去除String前置双引号并提取Integer值的方法

嘿,这问题我熟!你手里的字符串是\"2.450,00,要提取出Integer值对吧?咱们一步步来拆解解决:

第一步:先移除开头的双引号

Java里有好几种简单的方式去掉开头的双引号:

  • 用substring()最直接,因为双引号就在字符串的第一个位置:
    String original = "\"2.450,00";
    String withoutQuotes = original.substring(1);
    
  • 也可以用正则精准匹配开头的双引号,避免误删其他位置的引号(虽然你的场景里只有开头有):
    String withoutQuotes = original.replaceFirst("^\"", "");
    
第二步:处理数字格式,转成Integer

你的字符串是欧洲风格的数字格式:.是千位分隔符,,是小数点。要转成Integer,得先把它转换成Java能识别的格式,或者手动处理符号:

方法1:用NumberFormat适配地区格式

这种方法最规范,适合处理不同地区的数字格式:

import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

// 创建德国地区的NumberFormat(适配千分位用.、小数点用,的格式)
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
try {
    Number number = format.parse(withoutQuotes);
    int intValue = number.intValue(); // 自动舍去小数部分,得到2450
    System.out.println(intValue);
} catch (ParseException e) {
    e.printStackTrace(); // 处理解析失败的情况,比如格式不对
}

方法2:手动替换符号后转换

如果不想依赖Locale,直接手动替换符号也很方便:

// 先去掉千分位的.,再把小数点,换成.,变成标准数字格式2450.00
String standardNumber = withoutQuotes.replace(".", "").replace(",", ".");

// 方式A:转成Double后取整
int intValue1 = (int) Double.parseDouble(standardNumber);

// 方式B:拆分出整数部分直接转Integer
String integerPart = standardNumber.split("\\.")[0];
int intValue2 = Integer.parseInt(integerPart);
整合完整代码示例

把上面的步骤合起来,完整的可运行代码如下:

import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

public class NumberExtractor {
    public static void main(String[] args) {
        String originalString = "\"2.450,00";
        
        // 移除开头的双引号
        String cleanedString = originalString.substring(1);
        
        // 方法1:地区格式解析
        try {
            NumberFormat germanFormat = NumberFormat.getInstance(Locale.GERMAN);
            Number number = germanFormat.parse(cleanedString);
            int result1 = number.intValue();
            System.out.println("方法1结果:" + result1); // 输出2450
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        // 方法2:手动处理符号
        String standardNum = cleanedString.replace(".", "").replace(",", ".");
        int result2 = (int) Double.parseDouble(standardNum);
        System.out.println("方法2结果:" + result2); // 输出2450
        
        // 方法3:提取整数部分
        String integerPart = standardNum.split("\\.")[0];
        int result3 = Integer.parseInt(integerPart);
        System.out.println("方法3结果:" + result3); // 输出2450
    }
}
小提醒
  • 如果你输入的字符串里不小心混了中文逗号(比如你写的"2.450,00,),记得先把中文逗号替换成英文逗号:cleanedString = cleanedString.replace(",", ",");
  • 要确保转换后的数字在Integer的范围内(-2147483648 到 2147483647),如果数字太大,记得换成Long类型。

内容的提问来源于stack exchange,提问作者id6070

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:17:33