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
相关产品推荐
相关产品推荐

