我想知道在.Split()方法中是否有任何方式或模式使用,这样当我按句点分割句子时,它不会分割十进制数(假设在句子中存在小数值) )。
例如:" Windows Phone 8.1 现在拥有' Cortana&#39 ;,这是平台的类似Siri的功能。"
当我按期间拆分时,它将分为8.1编号。我想跳过十进制数作为句子的一部分,这样当我按句点分割时,句子中的小数仍然会在那里。
答案 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)\.");