簡體   English   中英

C#:從字符串中提取數字,然后將逗號(,)更改為點(。)

[英]C#: Extract number out of string, then change comma(,) to dot(.)

我正在使用 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";
        }
    }
}

如何修改它以提取數字然后用點替換逗號?

String.Replace 是一個選項( text.Replace(",", ".") )。

最好用正確的 CultureInfo 正確解析數字,而不是用 InvariantCulture 重新格式化它。

這顯然是克朗,所以我們應該使用瑞典文化信息來翻譯它。 首先我們從輸入開始:

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包含一個已正確解析的小數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM