我想通过短语分割字符串,并且这样做我正在这样做:
string.Split(new[] { ". ", "? ", "! " }, StringSplitOptions.None);
事情是我的字符串有时会在数字之后捕获,当它有不同的点时,我想在数字之前分开,而不是之后,如果可能的话。
原:
Com om processo de agendamentodenãomaisque 60 segundos,嗯 pagamento seguro,garantia de qualidade,Wegho torna-se o meio mais 简单的方便的年龄的服务。 Entenda-se lar como a simbiose perfeita do ativofísico“casa”e do ativo“emocional”família。 Preparado para ter um parceiro de excelêncianosserviçosqueprecisa para o seu lar? 1.探索操作系统 nossosserviçosemWegho.om 2. Selecioneoserviçodeque pretende。 Atravésdocódigo邮政verificaremos se estamos presentesnaárea que pretende 3. Escolha uma hora
结果:
Com om processo de agendamentodenãomaisque 60 segundos,嗯 pagamento seguro,garantia de qualidade,Wegho torna-se o meio mais 简单的方便的年龄的服务。
Entenda-se lar como a simbiose perfeita do ativofísico“casa”e do ativo“emocional”família。
Preparado para ter um parceiroexcelêncianosserviçosqueprecisa para o seu lar?
- 探索osnossosserviçosemWegho.om
- Selecioneoserviçodeque pretende。 Atravésdocódigo邮政verificaremos se estamos presentesnaáreaquepretende
- Escolha uma hora
醇>
而且,是否可以保留字符串在字符串中分割的捕获的分隔字符?
答案 0 :(得分:2)
一种方法是按照当前的方式拆分字符串,然后再次遍历结果列表,将仅限数字的字符串与紧跟其后的字符串重新组合:
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);
}
请注意,您的整体方法很脆弱,因为无法判断数字部分是否是&#34;子弹编号&#34;或者没有用户标记来帮助您识别编号的子弹。
答案 1 :(得分:1)
你可以试试正则表达式:
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);
然而,分裂也会在子弹内部起作用。而且你还需要用点来结束你的子弹内容。