2

正規表現を使用した次のテストをC#に置き換えたい

Input: P C $10000 F + T X (A)
Output: PC $10000 F+TX(A)

金額以外のスペースを削除することを意味します。

4

2 に答える 2

3

次の正規表現のすべての一致を空の文字列に置き換えます。

(?<!-?\$\d+(\.\d{2})?) +(?!-?\$)

これは、後にがない$、または前に金額がない1つ以上のスペースに一致します。

これが機能するためには、正規表現エンジンが可変長ルックビハインドをサポートする必要があります。これはC#では問題にならないはずですが、この正規表現はオンラインテストツールや他の言語では機能しない可能性があります。

于 2012-10-10T23:24:44.207 に答える
0
using System;
using System.Text.RegularExpressions;

public static class Program
{
    public static void Main(string[] args)
    {
        string before = @"P C $10000 F + T X (A) ";
        string after = Regex.Replace(before, @"(?<a> -?\$?\s*-?\s*[\d.]+ )|(?<b>\s*.*?(\s?))", 
                    m => m.Groups["a"].Success? m.Value : m.Value.Trim());

        Console.WriteLine("before: '{0}', after: '{1}'", before, after);
    }
}

他の金額も自由に受け入れました。

$ 10000
$ -2.30
于 2012-10-10T23:32:34.027 に答える