C#:从字符串中提取数字,然后将逗号(,)更改为点(。)
Posted
技术标签:
【中文标题】C#:从字符串中提取数字,然后将逗号(,)更改为点(。)【英文标题】:C#: Extract number out of string, then change comma(,) to dot(.) 【发布时间】:2012-05-14 23:54:34 【问题描述】:我正在使用 Visual Web Ripper 提取网站上产品的名称和价格。
当我从表格中提取价格时,它的格式如下:
氪。 129,30
我需要提取 129,30,然后将逗号变成点 (129.30)。
Visual Web Ripper 可以使用脚本来修改提取的内容。它可以使用标准的Regex、C#和VB.NET。
在 Regex 选项卡中我发现
(\d+.)?(\d+)(.\d+)?
给我 129,30,但我不能把逗号变成点。
因此我必须使用 C#。它带有这个标准脚本:
using System;
using VisualWebRipper.Internal.SimplehtmlParser;
using VisualWebRipper;
public class Script
//See help for a definition of WrContentTransformationArguments.
public static string TransformContent(WrContentTransformationArguments args)
try
//Place your transformation code here.
//This example just returns the input data
return args.Content;
catch(Exception exp)
//Place error handling here
args.WriteDebug("Custom script error: " + exp.Message);
return "Custom script error";
如何修改它以提取数字然后用点替换逗号?
【问题讨论】:
【参考方案1】:String.Replace 是一个选项 (text.Replace(",", ".")
)。
最好用正确的 CultureInfo 正确解析数字,而不是用 InvariantCulture 重新格式化。
【讨论】:
感谢您的回复。我怎么做? :) 我今天第一次开始研究 C#。 我可以将文化信息应用于字符串(Kr. 129,30)并获得 129.30 吗?还是我必须先提取号码?我不知道如何在 C# 中以与 Regex 相同的方式使用 Regex。【参考方案2】:这显然是Krona,所以我们应该使用瑞典文化信息来翻译它。首先我们从输入开始:
var original = "Kr. 129,30";
了解文化:
using System.Globalization;
var culture = CultureInfo.GetCultureInfo("sv-SE");
这种文化要求货币字符串为kr
(不区分大小写),但我们有Kr.
。所以让我们更新它:
var format = (NumberFormatInfo)culture.NumberFormat.Clone();
format.CurrencySymbol = "Kr.";
现在文化感知解析:
var number = Decimal.Parse(original, NumberStyles.Currency, format);
现在number
包含一个已正确解析的小数。
【讨论】:
谢谢! :) 使用return number.ToString();
我得到“129,30”。现在我如何得到“129.30”? :)
显然不是瑞典克朗,是吗?为什么不是挪威或丹麦文化?
@galskab number.ToString(CultureInfo.InvariantCulture)
但真正的答案取决于为什么你想得到一个带点小数分隔符的字符串。
@phoog 正确,但这是一个例子——我不会硬编码瑞典!他从一个购物网站上得到这个 - 我会使用那个网站的国家。还有你对为什么要用'.'把它变成一个字符串的评论。是正确的。
@phoog True :) 它实际上是挪威语,但这没关系 :) 谢谢,CultureInfo.InvariantCulture
有效! :)以上是关于C#:从字符串中提取数字,然后将逗号(,)更改为点(。)的主要内容,如果未能解决你的问题,请参考以下文章