#c# #asp.net #visual-studio #colors #if-statement
#c# #asp.net #visual-studio #Цвет #if-statement
Вопрос:
Я новичок, и утверждения If — моя слабость. У меня есть простая программа, которая отображает имена файлов, которые находятся в определенной папке. Однако в некоторых файлах могут быть строки, начинающиеся с LIFT . Я хочу перехватить те файлы, в которых есть эта определенная строка, и отобразить имя файла другим цветом (предпочтительно красным). Вот что у меня есть до сих пор: любая помощь будет с благодарностью!! Спасибо!
public partial class ShippedOrders : System.Web.UI.Page
{
class Program
{
static void Main()
{
string[] array1 = Directory.GetFiles(@"C:KaplanReplies");
string[] array2 = Directory.GetFiles(@"C:KaplanReplies", "*.REP");
Console.WriteLine("---Files:---");
foreach (string name in array1)
{
Console.WriteLine(name);
}
Console.WriteLine("---REP Files: ---");
foreach (string name in array2)
{
Console.WriteLine(name);
}
}
}
}
Комментарии:
1. Вы говорите об имени файла или внутри самого файла.
2. Почему вы пишете на консоль в ASP.Net ?
3. внутри файла. и @SLaks ; да.
4. @javasocute — вы не должны записывать на консоль в классе System.Web.UI.Page, измените свой код, чтобы он имел больше смысла, что именно вы не понимаете в операторах if?
Ответ №1:
Каталог.GetFiles(directoryPath) вернет массив строк, в которых перечислены имена файлов (полные пути) в этом каталоге. Вам придется фактически открывать и читать каждый файл, используя возвращаемый массив строк. Прочитайте каждый файл построчно в цикле и проверьте, начинаются ли какие-либо строки с «LIFT».
Кроме того, способ настройки вашего кода для этой веб-страницы является фанковым. Вы объявляете класс внутри частичного класса страницы. Попробуйте настроить свой код следующим образом:
public partial class ShippedOrders : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.goFiles();
}
public void goFiles()
{
string[] array1 = Directory.GetFiles(@"C:KaplanReplies");
string[] array2 = Directory.GetFiles(@"C:KaplanReplies", "*.REP");
System.IO.StreamReader file = null;
string line = "";
bool hasLIFT = false;
Response.Write("---Files:---<br/>");
foreach (string name in array1)
{
file = new System.IO.StreamReader(@name);
while((line = file.ReadLine()) != null)
{
if(line.StartsWith("LIFT"))
{
hasLIFT = true;
break;
}
}
if(hasLIFT)
{
Response.Write("<span style="color:Red;">" name "</span><br/>";
hasLIFT = false;
}
else
Response.Write(name "<br/>";
}
//and can do the same for other array
}
}
Комментарии:
1. while ((строка = reader.ReadLine()) != null) { if (строка. StartsWith(«LIFT»)) Консоль. Цвет переднего плана = консоль. Цвет. Красный; как с кодом shredder, так и с кодом miguels. я на правильном пути с этим?
2. @javasocute смотрите мое обновление. Я изменил запись в консоль, чтобы записать ваш текст в ответ на запрос страницы. это должно помочь вам получить результаты, которые вы ищете
3. @javasocute я сделал еще одно обновление, чтобы помочь вам правильно настроить ваш код в коде за вашей страницей.
4. Спасибо за всю вашу помощь, Шредер, любопытно, почему вы используете response.write вместо console. Я думаю, мне нужно изучить все эти консольные и неконсолидированные вещи.
5. @javasocute Ну, я думаю, это зависит от причины, по которой вы пишете эти имена файлов. Вы даже видите вывод с консоли. WriteLine()? Я думаю, для этого вам нужно настроить пользовательский писатель для консоли. Вы можете использовать
System.Diagnostics.Debug.WriteLine("debug statement");
для записи в окно вывода в VS в отладчике. НоResponse.Write()
независимо от этого вывод отображается прямо на странице.
Ответ №2:
Вы можете изменить цвет вывода консоли с помощью Console.ForegroundColor
свойства.
Чтобы узнать, содержит ли файл нужный вам текст, вам нужно открыть его и отсканировать файл.
Затем сделайте это:
if (fileContainsText) Console.ForegroundColor = ConsoleColor.Red;
else Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(name);
Редактировать
Я не заметил, что вы пытались записать в консоль внутри ASP.NET страница сервера… в этом случае вам нужно сообщить нам, какое приложение вы создаете… это консольное приложение, веб-приложение или веб-сайт… это зависит.
Использование Console
не подходит для веб-приложений.
РЕДАКТИРОВАТЬ 2
Кстати, вы можете использовать Console
только в консольных приложениях. Консольное приложение — это отдельное приложение Windows, которое отличается от веб-приложения.
Если вы когда-нибудь захотите создать консольное приложение, в окне Нового проекта вы можете найти его в категории Windows, затем вы можете найти тип проекта под названием Консольное приложение.
Ответ №3:
Вы можете сделать это внутри вашего цикла foreach: if(name.contains("LIFT"))
{
//make red.
}
однако у него есть проблема, заключающаяся в том, что он проверяет только, содержит ли строка (имя) строку LIFT , а не если строка находится в начале имени файла. Если вы хотите проверить, находится ли LIFT в начале имени файла, вы должны использовать некоторые из методов Trim .