C#删除每行中最长的单词
我有.txt文件 我必须删除每行中所有最长的单词 我寻找最长单词的主要方法是:C#删除每行中最长的单词,c#,C#,我有.txt文件 我必须删除每行中所有最长的单词 我寻找最长单词的主要方法是: /// <summary> /// Finds longest word in line /// </summary> /// <param name="eil">Line</param> /// <param name="skyr">Punctuation</param&
/// <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
的值,您可能会得到一个索引