Я все еще немного ржавый на C# Мне нужно хранить слова больше, чем 8 букв из текстового файла. Это то, что у меня есть на данный момент:Есть ли способ повторного использования строки C#?
n новый текстовый файл.
Я все еще немного ржавый на C# Мне нужно хранить слова больше, чем 8 букв из текстового файла. Это то, что у меня есть на данный момент:Есть ли способ повторного использования строки C#?
n новый текстовый файл.
Используйте = ""
для его сброса. Использовать StringBuilder
было бы лучше.
foreach (char c in fileString)
{
newString += c;
lettercount++;
if (lettercount > 7 && c == ' ')
{
Console.WriteLine(newString);
lettercount=0;
newString = "";
}
if (c == ' ')
{
lettercount = 0;
newString = "";
}
}
Если вы использовали StringBuilder
, это было бы что-то вроде:
foreach (char c in fileString)
{
newString.Append(c);
lettercount++;
if (lettercount > 7 && c == ' ')
{
Console.WriteLine(newString.ToString());
lettercount=0;
newString.Clear();
}
if (c == ' ')
{
lettercount = 0;
newString.Clear();
}
}
Попробуйте это:
string[] words = fileString.Split(0x20) // split by space
IEnumerable<string> longerThan8 = words.Where(word => word.Length > 8);
Красивый, простой подход. +1 – ColinM
... это должно быть '> 7', не так ли? –
@PeterB Вопрос: «Я все еще немного ржавый на C# Мне нужно хранить слова больше, чем 8 букв из текстового файла» и «8> 8 == false» –
Как насчет заменить всю вещь с чем-то вроде
foreach (var item in fileString.Split(' ').Where(t => t.Length > 7))
{
Console.WriteLine(item);
}
foreach (string s in fileString.Split(' ').Where(_=>_.Length > 7))
{
Console.WriteLine(s);
}
попробуйте stringBulider или просто newString = ""; –
Как насчет просто 'newString =" ";'? И да, вы, вероятно, должны использовать StringBuilder для производительности. –
Рассмотрите возможность избавиться от 'lettercount', лучше используйте' newString.Length' вместо этого. Он всегда даст вам точно такую же информацию. И он будет сброшен до 0 (очевидно), если вы выполните 'newString =" ";'. –