在 C# 中使用 Split() 时忽略十进制数
本文关键字:十进制数 Split | 更新日期: 2023-09-27 17:57:09
我想知道是否有任何方法或模式可以在.Split() 方法,这样当我按句点拆分句子时,它不会拆分十进制数(假设句子中存在十进制值)。
例如:"Windows Phone 8.1现在具有'Cortana',这是该平台的类似Siri的功能。
当我按句点拆分时,它将在 8.1 数字处拆分。我想跳过该十进制数,因为它仍然是句子的一部分,这样当我按句点拆分时,句子中的小数点仍然存在。
我手边没有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)'.");