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

本文关键字:十进制数 Split | 更新日期: 2023-09-27 17:57:09

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

例如:"Windows Phone 8.1现在具有'Cortana',这是该平台的类似Siri的功能。

当我按句点拆分时,它将在 8.1 数字处拆分。我想跳过该十进制数,因为它仍然是句子的一部分,这样当我按句点拆分时,句子中的小数点仍然存在。

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

我手边没有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

我认为你可以做到:

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