在C#中使用Split()时忽略十进制数字

时间:2014-04-06 05:40:02

标签: c# regex split

我想知道在.Split()方法中是否有任何方式或模式使用,这样当我按句点分割句子时,它不会分割十进制数(假设在句子中存在小数值) )。

例如:" Windows Phone 8.1 现在拥有' Cortana&#39 ;,这是平台的类似Siri的功能。"

当我按期间拆分时,它将分为8.1编号。我想跳过十进制数作为句子的一部分,这样当我按句点分割时,句子中的小数仍然会在那里。

2 个答案:

答案 0 :(得分:3)

我没有C#编译器方便,但以下正则表达式应该可以解决问题。 我在Java中测试了它,它在正则表达式处理中相对类似。 它将在任何前面没有数字和后面都有数字的.上分开。

Regex reg = new Regex("(?<!\\d)\\.(?!\\d)|(?<=\\d)\\.(?!\\d)|(?<!\\d)\\.(?=\\d)");

string[] output = reg.split(input);

我不确定您是否需要在\\.中执行C#,因此您可能需要从前面删除\\

以下代码:

using System.Text.RegularExpressions;
using System.IO;
using System;

public class Program {
    public static void Main(string[] args) {
        string input = "Windows Phone 8.1 now has 'Cortana', a Siri-like feature for the platform.";
        Regex reg = new Regex("(?<!\\d)\\.(?!\\d)|(?<=\\d)\\.(?!\\d)|(?<!\\d)\\.(?=\\d)");

        string[] output = reg.Split(input);
        Console.WriteLine(output[0]);
    }
}

输出:

Windows Phone 8.1 now has 'Cortana', a Siri-like feature for the platform

答案 1 :(得分:0)

我认为你可以做到:

var output =  Regex.Split(input,@"(?!.*\w)\.");