0

Visual Web Ripperを使用して、Webサイト上の製品の名前と価格を抽出しています。

テーブルから価格を抽出すると、次のような形式になります。

Kr。129,30

129,30を抽出してから、コンマをドット(129.30)に変換する必要があります。

Visual Web Ripperは、スクリプトを使用して、抽出されたコンテンツを変更できます。標準の正規表現、C#、VB.NETを使用できます。

[正規表現]タブで、

(\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";
        }
    }
}

数値を抽出してからコンマをドットに置き換えるように変更するにはどうすればよいですか?

4

2 に答える 2

4

String.Replaceはオプション(text.Replace(",", "."))です。

正しいCultureInfoを使用して数値を適切に解析し、InvariantCultureを使用して再フォーマットするよりも適切です。

于 2012-05-14T23:58:07.800 に答える
3

これは明らかに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正しく解析された 10 進数が含まれるようになりました。

于 2012-05-15T00:19:08.323 に答える