首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串拆分为“。”除非在一个数字之后

将字符串拆分为“。”除非在一个数字之后
EN

Stack Overflow用户
提问于 2017-12-06 12:06:58
回答 2查看 77关注 0票数 0

我想用短语来分割字符串,为了做到这一点,我正在这样做:

代码语言:javascript
复制
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。 您的位置:我也知道>地区>经济>

  1. 探索os nossos servi os em Wegho.om
  2. Selecione o servi o que pretendeAtravés do código postal se estamos presentes naárea que pretende
  3. 埃斯科拉乌马霍拉

此外,是否有可能保留在字符串中分离字符串的所捕获的分隔字符?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-06 12:25:44

您可以尝试正则表达式:

代码语言:javascript
复制
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);

检查完整的代码结果

然而,分裂也会在子弹内部起作用。你也需要用一个圆点来结束你的项目内容。

票数 1
EN

Stack Overflow用户

发布于 2017-12-06 12:14:20

一种方法是以当前的方式拆分字符串,然后再次遍历结果列表,将数字字符串与紧跟在它们后面的字符串重新组合:

代码语言:javascript
复制
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);
}

请注意,您的整体方法是脆弱的,因为它是不可能判断一个数字部分是一个“子弹号”,或没有一些用户标记,以帮助您识别编号子弹。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47673938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档