从字符串中删除空格,除了特殊字符的开头和degit的结尾到c#

时间:2012-10-10 23:13:15

标签: c# regex

我想使用正则表达式将以下文本替换为c#

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

表示删除除美元金额外的空格。

2 个答案:

答案 0 :(得分:3)

将以下正则表达式的所有匹配替换为空字符串:

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

这将匹配一个或多个未跟随$的空格,或者以美元金额为准。

为此,你的正则表达式引擎需要支持可变长度的lookbehinds。这不应该是C#中的问题,但是这个正则表达式可能不适用于在线测试工具或其他语言。

答案 1 :(得分: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