Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将文本拆分为段落?_C# - Fatal编程技术网

C# 如何将文本拆分为段落?

C# 如何将文本拆分为段落?,c#,C#,我需要将一个字符串拆分为多个段落,并计算这些段落(由两行或多行空行分隔的段落)。 此外,我需要阅读课文中的每个单词,并且需要能够提到这个单词所属的段落 例如(每个段落不止一行,段落之间有两行空行): 这是 第一 段落 这是 第二 段落 这是 第三 段落 我认为您希望将文本拆分为段落,但您是否有分隔符来告诉您需要拆分字符串?例如,如果您想将段落标识为“.”,这应该可以做到 string parations=“我的第一段,从前” string[]单词=段落。拆分('.') 其结果将是: My fir

我需要将一个字符串拆分为多个段落,并计算这些段落(由两行或多行空行分隔的段落)。 此外,我需要阅读课文中的每个单词,并且需要能够提到这个单词所属的段落

例如(每个段落不止一行,段落之间有两行空行):

这是
第一
段落
这是
第二
段落
这是
第三
段落

我认为您希望将文本拆分为段落,但您是否有分隔符来告诉您需要拆分字符串?例如,如果您想将段落标识为“.”,这应该可以做到

string parations=“我的第一段,从前”

string[]单词=段落。拆分('.')

其结果将是:

My first paragraph
Once upon a time

请记住,“.”字符已被删除

我认为您希望将文本拆分为段落,但是您是否有分隔符来告诉您需要拆分字符串?例如,如果您想用“.”标识段落,这应该可以做到

string parations=“我的第一段,从前”

string[]单词=段落。拆分('.')

其结果将是:

My first paragraph
Once upon a time

请记住,“.”字符已被删除

像这样的东西应该适合你:

        var paragraphMarker = Environment.NewLine + Environment.NewLine;
        var paragraphs = fileText.Split(new[] {paragraphMarker},
                                        StringSplitOptions.RemoveEmptyEntries);
        foreach (var paragraph in paragraphs)
        {
            var words = paragraph.Split(new[] {' '}, 
                                  StringSplitOptions.RemoveEmptyEntries)
                                 .Select(w => w.Trim());
            //do something
        }
您可能需要更改行分隔符,文件可以有不同的变体,如
“\n”
“\r”
”\r\n”

您还可以在
Trim
函数中传递特定字符,以删除符号,如
,“
!”
“,

编辑:要增加灵活性,可以使用regexp拆分段落:

        var paragraphs = Regex.Split(fileText, @"(\r\n?|\n){2}")
                              .Where(p => p.Any(char.IsLetterOrDigit));
        foreach (var paragraph in paragraphs)
        {
            var words = paragraph.Split(new[] {' '}, 
                                  StringSplitOptions.RemoveEmptyEntries)
                                 .Select(w => w.Trim());
            //do something
        }

像这样的东西应该适合你:

        var paragraphMarker = Environment.NewLine + Environment.NewLine;
        var paragraphs = fileText.Split(new[] {paragraphMarker},
                                        StringSplitOptions.RemoveEmptyEntries);
        foreach (var paragraph in paragraphs)
        {
            var words = paragraph.Split(new[] {' '}, 
                                  StringSplitOptions.RemoveEmptyEntries)
                                 .Select(w => w.Trim());
            //do something
        }
您可能需要更改行分隔符,文件可以有不同的变体,如
“\n”
“\r”
”\r\n”

您还可以在
Trim
函数中传递特定字符,以删除符号,如
,“
,”!“
,“

编辑:要增加灵活性,可以使用regexp拆分段落:

        var paragraphs = Regex.Split(fileText, @"(\r\n?|\n){2}")
                              .Where(p => p.Any(char.IsLetterOrDigit));
        foreach (var paragraph in paragraphs)
        {
            var words = paragraph.Split(new[] {' '}, 
                                  StringSplitOptions.RemoveEmptyEntries)
                                 .Select(w => w.Trim());
            //do something
        }
公共静态列表拆分行(字符串isstr,int size=100)
{
var words=isstr.Split(新[]{''},
StringSplitOptions.RemoveEmptyEntries);
List lo=新列表();
字符串tmp=“”;
int i=0;
for(i=0;isize)
{
lo.Add(tmp);
tmp=“”;
}
tmp+=“”+字[i];
}
如果(!String.IsNullOrWhiteSpace(tmp))
{
lo.Add(tmp);
}
返回lo;
}
公共静态列表拆分行(字符串isstr,int size=100)
{
var words=isstr.Split(新[]{''},
StringSplitOptions.RemoveEmptyEntries);
List lo=新列表();
字符串tmp=“”;
int i=0;
for(i=0;isize)
{
lo.Add(tmp);
tmp=“”;
}
tmp+=“”+字[i];
}
如果(!String.IsNullOrWhiteSpace(tmp))
{
lo.Add(tmp);
}
返回lo;
}


显示您尝试的代码并添加段落的定义方式。。。新行?您可以使用someText.Split(新字符[]{',},StringSplitOptions.RemoveEmptyEntries)拆分文本;我不明白为什么这样的问题得到了3票,而其他没有发布代码的问题得到了否定票?显示您尝试过的代码并添加如何定义段落。。。新行?您可以使用someText.Split(新字符[]{',},StringSplitOptions.RemoveEmptyEntries)拆分文本;我不明白为什么这样的问题得到了3票,而其他没有发布代码的问题得到了否定票?这一行实际执行了什么。选择(w=>w.Trim())@CobyAbutbul
Trim
从字符串的开头和结尾删除空白字符(还有
TrimStart
-仅从开头,而
TrimEnd
-仅从结尾)。如果您需要删除一些其他符号,例如
,您可以将它们传递到“Trim”中,例如
Trim(new[]{'.','.','.','?','!'})
,这样它将删除字符串开头和结尾的所有字符<代码>选择
函数将
修剪
应用到我们从
分割
函数中获得的每个字符串。太好了。感谢Andrey TretyakAs,我理解段落。长度应该包含我拥有的段落数,但它始终返回1。@CobyAbutbul可能是您的文件有不同的行尾符号。尝试以下操作:
var parages=fileText.Split(新[]{paragraphMarker,“\n\n”,“\r\r”,“\r\n\r\n”},StringSplitOptions.removemptyEntries)。您也可以考虑使用ReXEP类似<代码> var段落=ReEX.Read(FielEXT,@)(\r\n·\n){ 2 })< /代码>。如果您可以添加包含两个或多个段落的文本示例,那就太好了。这一行实际执行的是什么。选择(w=>w.Trim())@CobyAbutbul
Trim
从字符串的开头和结尾删除空白字符(还有
TrimStart
-仅从开头,而
TrimEnd
-仅从结尾)。如果您需要删除一些其他符号,例如
,您可以将它们传递到“Trim”中,例如
Trim(new[]{'.','.','.','?','!'})
,这样它将删除字符串开头和结尾的所有字符<代码>选择
函数将
修剪
应用到从
获取的每个字符串