我想用短语来分割字符串,为了做到这一点,我正在这样做:
string.Split(new[] { ". ", "? ", "! " }, StringSplitOptions.None);问题是我的字符串有时会在一个数字之后捕捉到,当它有不同的点时,我想在数字之前分开,如果可能的话,不要在后面分开。
原件:
Com um processo de agendamento de n o mais que 60 segundos,um pagamento,garantia de qualidade,Wegho torna-se o meio mais simples e poder agendar servi os para o seu lar。Entenda lar como a simbiose perfeita do ativo físico“casa”e do ativo“emocional”família。1.探索os nossos servi os em Wegho.om 2. Selecione o servi o que pretende.Através do código postal se estamos presentes naárea que pretende 3. Escolha uma hora
结果:
Com um processo de agendamento de n o mais que 60 segundos,um pagamento,garantia de qualidade,Wegho torna-se o meio mais simples e poder agendar servi os para o seu lar。 Entenda lar como a simbiose perfeita do ativo físico“casa”e do ativo“emocional”família。 您的位置:我也知道>地区>经济>
此外,是否有可能保留在字符串中分离字符串的所捕获的分隔字符?
发布于 2017-12-06 12:25:44
您可以尝试正则表达式:
string pattern = @"([^\d][.!?][ ])";
string substitution = @"$1\n\n";
string input = @"Com um processo de agendamento de não mais que 60 segundos, um pagamento seguro, garantia de qualidade, a Wegho torna-se o meio mais simples e conveniente de poder agendar serviços para o seu lar. Entenda-se lar como a simbiose perfeita do ativo físico “casa” e do ativo “emocional” família. Preparado para ter um parceiro de excelência nos serviços que precisa para o seu lar? 1. Explore os nossos serviços em Wegho.om. 2. Selecione o serviço que pretende. Através do código postal verificaremos se estamos presentes na área que pretende. 3. Escolha uma hora";
RegexOptions options = RegexOptions.IgnoreCase;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);然而,分裂也会在子弹内部起作用。你也需要用一个圆点来结束你的项目内容。
发布于 2017-12-06 12:14:20
一种方法是以当前的方式拆分字符串,然后再次遍历结果列表,将数字字符串与紧跟在它们后面的字符串重新组合:
var tokens = string.Split(new[] { ". ", "? ", "! " }, StringSplitOptions.None);
var res = new List<string>();
for (int i = 0 ; i < tokens.Length ; i++) {
var tok = tokens[i];
int ignore;
if (i != tokens.Length-1 && int.TryParse(tok, out ignore)) {
tok += ". "+tokens[++i];
}
res.Add(tok);
}请注意,您的整体方法是脆弱的,因为它是不可能判断一个数字部分是一个“子弹号”,或没有一些用户标记,以帮助您识别编号子弹。
https://stackoverflow.com/questions/47673938
复制相似问题