【发布时间】:2021-05-12 15:38:47
【问题描述】:
发生了一些奇怪的事情,我有一个 Excel 文件中的值,我使用 Regex.Replace() 将值转换为我需要的值,本地一切正常,但是当我发布返回时与 Regex.Replace( ):
给定这个值:376900€
我使用这个代码:
x = Regex.Replace(sheet.Cells['D' + row].Text.Replace("€", ""), @"\s+", "");
var Amount = int.Parse(x);
本地 x 是:376900
但在应用服务中发布时 x 为:376,900,解析为 int 时会引发异常。
我在没有使用 Regex.Replace() 的情况下解决了它,但想知道为什么会这样?是因为服务器在北欧,Regex.Replace() 使用了一些英国转换吗?
谢谢
【问题讨论】:
-
您似乎正在使用 Excel 互操作,当您的 localPC 与应用服务器打开时,Excel 文件的文化/格式可能不同。这可能意味着 Excel 文件的文本显示“376,900€”。考虑使用 'sheet.Cells['D' + row].Value.Replace',因为 Value 属性采用基础值而不是格式化。我怀疑工作表的值 376900,它已被格式化,你得到奇怪的结果
-
@MacroMarc 它可能是服务器位置中的 Excel 互操作文化,如果你想创建一个答案,我会接受它
-
@JasonPan 你的回答有助于说它不是来自正则表达式但没有回答,建议我调试并查看我已经知道并在我的问题中表达的值......虽然 MacroMarc 评论正确切中要害。
-
@MarchalPT 远程调试,不在本地。
-
我想说的是,你应该考虑使用 sheet.Cells['D' + row].Value 而不是 sheet.Cells['D' + row].Text 这在大多数情况下是不可取的使用 .Text 的案例 除了解决文化问题之外,如果您不需要使用 .Text,请尝试使用 .Value2 或 .Value
标签: excel regex asp.net-core azure-web-app-service parseint