如何在文本中找到最长的句子?

时间:2015-11-24 14:35:48

标签: c#

我们说我的文字文件类似于:

  

C#[注2](发音为see sharp)是一种多范式编程   语言包含强烈的打字,命令式,陈述性,   功能,通用,面向对象(基于类),和   面向组件的编程学科。它是由开发的   Microsoft在其.NET计划中,后来被批准为标准   由Ecma(ECMA-334)和ISO(ISO / IEC 23270:2006)。 C#就是其中之一   为公共语言基础结构设计的编程语言。   C#旨在成为一个简单,现代,通用的,   面向对象的编程语言。[7]其开发团队领导   作者:Anders Hejlsberg。最新版本是C#6.0,它是   于2015年7月20日发布。[8]

如何在本文中找到最长的句子?我应该使用string[] lines = File.ReadAllLines(file);阅读吗?

编辑:你说是不可能的。但这是我老师给的任务..

好的,如何使用此文本文件执行此操作?:

  

短信或短信是撰写和发送的行为   两个或多个移动电话之间的简短电子信息,或   通过电话网络固定或携带的设备。这个词最初   提到使用短消息服务(SMS)发送的消息。它   已经发展到包含包含图像,视频和声音的消息   内容(称为MMS消息)。文本消息的发送者是已知的   作为一个短信,而服务本身有不同的口语   取决于地区。它可以简单地称为文本   北美,英国,澳大利亚,新西兰和美国   菲律宾,欧洲大部分地区的短信,以及中国的彩信或短信   中东,非洲和亚洲。

4 个答案:

答案 0 :(得分:1)

如果你真的想用句子分割英文文本(而不仅仅是做家庭作业),我建议使用一种开源自然语言处理工具,例如SharpNLP这是一个C# Java OpenNLP工具的端口。我已从GitHub下载了此源代码,并在其def skate(y, t, params): phi, omega = y g, R = params derivs = [omega, -(g/R)*sin(phi)] return derivs 项目中创建了以下示例。该程序输出6个句子,最长的句子实际上是第一个句子。

Test

答案 1 :(得分:-2)

修改:编辑完问题后。我将采用Guffa's回答拆分字符串,并采用最长的字符串。

    string lines;

    try
    {   // Open the text file using a stream reader.
        using (StreamReader sr = new StreamReader("TestFile.txt"))
           lines = sr.ReadToEnd();     
    }
    catch (Exception e)
    {
        Console.WriteLine("The file could not be read:");
        Console.WriteLine(e.Message);
    }

    List<string> sentences = Regex.Split("", @"(?<=[\.!\?])\s+").ToList();
    var longestSentences = sentences.Where(s => s.Length == sentences.Max(l => l.Length));
    List<int> indexsOfLongestSentences = new List<int>();

    if(longestSentences.Any())
            indexsOfLongestSentences.AddRange(longestSentences.Select(longestSentence => sentences.IndexOf(longestSentence)));

在编辑问题之前回答

这是一种不正确的方式:

string[] lines = fileText.Split('.');
var line =lines.Max(l=>l.Length);

答案 2 :(得分:-2)

您可以使用string.Split(new string[]{"."},StringSplitOptions.None)方法 将字符串拆分为句子数组 然后你可以选择最长的string.Length

答案 3 :(得分:-3)

没有办法。抱歉,当您的文字包含"within its .NET initiative and later approved""sion is C# 6.0, which "之类的内容时,确实没有可靠的方式来确定实际句子的开始位置和结束时间。