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

.Net Core Regex.Replace方法本地与发布后运行结果不一致问题咨询

根因说明

你的区域文化影响的猜测方向是对的,但差异并非由Regex.Replace()触发,问题源头是Excel单元格值的读取逻辑:

  • Excel的Range.Text属性返回的是单元格界面显示的格式化文本,返回结果完全依赖运行环境的系统区域设置:
    • 本地开发环境的区域配置中欧元数值无千位分隔符,读取到的原始文本为376900€,你替换欧元符号、用正则清除空白后得到纯数字字符串376900,可正常解析为整数
    • 部署在北欧区域的服务器系统默认欧元数值会添加千位逗号分隔符,读取到的Cells.Text原始值本身就是376,900€,替换欧元符号和空白后自然得到带千位分隔符的376,900,正则替换仅按规则清除了空白字符,并未做任何区域格式转换,是读取阶段就已经存在逗号分隔符。
推荐优化方案
  • 优先读取原始值而非格式化文本:将sheet.Cells['D' + row].Text替换为sheet.Cells['D' + row].Value/Value2,直接获取数值类型的原始存储值,完全规避区域格式化带来的差异
  • 若必须处理格式化文本,解析时显式兼容千位分隔符:
using System.Globalization;

// 允许千位分隔符的前提下用固定文化解析,不受运行环境区域影响
var Amount = int.Parse(x, NumberStyles.AllowThousands, CultureInfo.InvariantCulture);

你可以在服务器环境打印Cells.Text的原始输出,即可验证逗号在正则处理前就已存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 16:45:03