C#删除每行中最长的单词

C#删除每行中最长的单词,c#,C#,我有.txt文件 我必须删除每行中所有最长的单词 我寻找最长单词的主要方法是: /// <summary> /// Finds longest word in line /// </summary> /// <param name="eil">Line</param> /// <param name="skyr">Punctuation</param&

我有.txt文件

我必须删除每行中所有最长的单词

我寻找最长单词的主要方法是:

    /// <summary>
    /// Finds longest word in line
    /// </summary>
    /// <param name="eil">Line</param>
    /// <param name="skyr">Punctuation</param>
    /// <returns>Returns longest word for line</returns>
    static string[] RastiIlgZodiEil(string eil, char[] skyr)
    {
        string[] zodIlg = new string[100];

        for (int k = 0; k < 100; k++)
        {
            zodIlg[k] = " ";
        }

        int kiek = 0;

        string[] parts = eil.Split(skyr,
            StringSplitOptions.RemoveEmptyEntries);

        int i = 0;

        foreach (string zodis in parts)
        {
            if (zodis.Length > zodIlg[i].Length)
            {
                zodIlg[kiek] = zodis;
                kiek++;
                i++;
            }
            else
            {
                i++;
            }
        }
        
        return zodIlg;
    }
//
///查找行中最长的单词
/// 
///线
///标点符号
///返回行的最长单词
静态字符串[]RastiIlgZodiEil(字符串eil,字符[]skyr)
{
字符串[]zodIlg=新字符串[100];
对于(int k=0;k<100;k++)
{
zodIlg[k]=”;
}
int kiek=0;
string[]parts=eil.Split(skyr,
StringSplitOptions.RemoveEmptyEntries);
int i=0;
foreach(部分字符串zodis)
{
if(zodis.Length>zodIlg[i].Length)
{
zodIlg[kiek]=zodis;
kiek++;
i++;
}
其他的
{
i++;
}
}
返回佐迪尔格;
}
EDIT:读取.txt文件并使用以前的方法将行替换为已配置的新行(通过将必须删除的字替换为空字符串)的方法

//
///为每行查找最长的单词,然后将其替换为
///空字符串
/// 
///文件名
///标点符号
静态无效RastiIlgZodiFaile(字符串fv、字符串fvr、字符[]skyr)
{
使用(var fr=新的StreamWriter(fvr,true,
System.Text.Encoding.GetEncoding(1257)))
{
使用(StreamReader=新的StreamReader(fv、,
Encoding.GetEncoding(1257)))
{
int n=0;
弦线;
而(((line=reader.ReadLine())!=null))
{
n++;
如果(直线长度>0)
{
字符串[]temp=RastiIlgZodiEil(行,skyr);
foreach(temp中的字符串t)
{
行=行。替换(t,“”);
}
fr.WriteLine(行);
}
}
}
}
}

您可以使用以下方法删除每行中最长的单词:

static string RemoveLongestWord(string eil, char[] skyr)
{
    string[] parts = eil.Split(skyr, StringSplitOptions.RemoveEmptyEntries);
    int longestLength = parts.OrderByDescending(s => s.Length).First().Length;
    var longestWords = parts.Where(s => s.Length == longestLength);
    foreach(string word in longestWords)
    {
        eil = eil.Replace(word, "");
    }
    return eil;
}
只需将每一行传递给函数,就可以在删除最长单词后返回该行

以下是一种与您之前所做的更为相似的方法:

static string[] RastiIlgZodiEil(string eil, char[] skyr)
{
    List<string> zodIlg = new List<string>();
    string[] parts = eil.Split(skyr, StringSplitOptions.RemoveEmptyEntries);

    int maxLength = -1;
    foreach (string zodis in parts)
    {
        if (zodis.Length > maxLength)
        {
            maxLength = zodis.Length;
        }
    }
    foreach (string zodis in parts)
    {
        if (zodis.Length == maxLength)
        {
            zodIlg.Add(zodis);
        }
    }
    return zodIlg.Distinct().ToArray();
}
static string[]RastiIlgZodiEil(string eil,char[]skyr)
{
List zodIlg=新列表();
string[]parts=eil.Split(skyr、StringSplitOptions.RemoveEmptyEntries);
int maxLength=-1;
foreach(部分字符串zodis)
{
如果(zodis.Length>maxLength)
{
maxLength=zodis.Length;
}
}
foreach(部分字符串zodis)
{
if(zodis.Length==maxLength)
{
添加(zodis);
}
}
返回zodIlg.Distinct().ToArray();
}

第一遍找到最长的长度。第二步将与该长度匹配的所有单词添加到
列表中。最后,我们调用
Distinct()
从列表中删除重复项并返回其数组版本。

您可以使用以下命令从每行中删除最长的单词:

static string RemoveLongestWord(string eil, char[] skyr)
{
    string[] parts = eil.Split(skyr, StringSplitOptions.RemoveEmptyEntries);
    int longestLength = parts.OrderByDescending(s => s.Length).First().Length;
    var longestWords = parts.Where(s => s.Length == longestLength);
    foreach(string word in longestWords)
    {
        eil = eil.Replace(word, "");
    }
    return eil;
}
只需将每一行传递给函数,就可以在删除最长单词后返回该行

以下是一种与您之前所做的更为相似的方法:

static string[] RastiIlgZodiEil(string eil, char[] skyr)
{
    List<string> zodIlg = new List<string>();
    string[] parts = eil.Split(skyr, StringSplitOptions.RemoveEmptyEntries);

    int maxLength = -1;
    foreach (string zodis in parts)
    {
        if (zodis.Length > maxLength)
        {
            maxLength = zodis.Length;
        }
    }
    foreach (string zodis in parts)
    {
        if (zodis.Length == maxLength)
        {
            zodIlg.Add(zodis);
        }
    }
    return zodIlg.Distinct().ToArray();
}
static string[]RastiIlgZodiEil(string eil,char[]skyr)
{
List zodIlg=新列表();
string[]parts=eil.Split(skyr、StringSplitOptions.RemoveEmptyEntries);
int maxLength=-1;
foreach(部分字符串zodis)
{
如果(zodis.Length>maxLength)
{
maxLength=zodis.Length;
}
}
foreach(部分字符串zodis)
{
if(zodis.Length==maxLength)
{
添加(zodis);
}
}
返回zodIlg.Distinct().ToArray();
}

第一遍找到最长的长度。第二步将与该长度匹配的所有单词添加到
列表中。最后,我们调用
Distinct()
从列表中删除重复项并返回其数组版本。

这里是另一个解决方案。读取文件中的所有行,并使用循环拆分每行<代码>聚合
函数用于获取最大长度以进一步过滤数据

    static void Main(string[] args)
    {
        var data = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.txt"));
        for (int i = 0; i < data.Length; i++)
        {
            Console.WriteLine(data[i]);

            var split = data[i].Split(' ');
            int length = split.Aggregate((a, b) => a.Length >= b.Length ? a : b).Length;
            data[i] = string.Join(' ', split.Where(w => w.Length < length));

            Console.WriteLine(data[i]);
        }

        Console.Read();
    }
static void Main(字符串[]args)
{
var data=File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“test.txt”);
for(int i=0;ia.长度>=b.长度?a:b).长度;
数据[i]=string.Join(“”,split.Where(w=>w.Length
这里是另一个解决方案。读取文件中的所有行,并使用循环拆分每行<代码>聚合
函数用于获取最大长度以进一步过滤数据

    static void Main(string[] args)
    {
        var data = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.txt"));
        for (int i = 0; i < data.Length; i++)
        {
            Console.WriteLine(data[i]);

            var split = data[i].Split(' ');
            int length = split.Aggregate((a, b) => a.Length >= b.Length ? a : b).Length;
            data[i] = string.Join(' ', split.Where(w => w.Length < length));

            Console.WriteLine(data[i]);
        }

        Console.Read();
    }
static void Main(字符串[]args)
{
var data=File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“test.txt”);
for(int i=0;ia.长度>=b.长度?a:b).长度;
数据[i]=string.Join(“”,split.Where(w=>w.Length
zodIlg[i].Length在比较时总是
1
if(zodis.Length>zodIlg[i].Length)
。您还应该对照
zodIlg
的长度检查
i
的值,您可能会得到一个
索引