Сохраните «Viewer.Readline» в строку для использования в операторе if / else - PullRequest
1 голос
/ 20 октября 2011

Программист N00b здесь ...
Попытка сохранить что-то в строку, чтобы использовать это в операторе if / else ...

Я загружаю файл .txt в память и анализирую текст, который находится внутри него на веб-странице. Вот как выглядит контент, который я анализирую на веб-странице


.RES B7 = 121
.RES C12 = 554
.RES VMAX = 4,7 мкВ


Единственная проблема с этим состоит в том, что там есть материал, который должен быть включен в файл .txt, но я не хочу анализировать этот материал (Этот текст, который я не хочу анализировать, не имеет никакого шаблона сортировать или еще что-нибудь. Это просто слова с несколькими звездочками).

Кто-то предложил мне поместить определенный код в строку ( Пробовал, и он не дает мне желаемых результатов ), так что я могу использовать эту строку в операторе if / else, установив if, чтобы сказать

if (string startswith (".RES")
{
//Code that parses
}
else
{
//Code that tell viewer to skip over that line if it doesn't start with ".RES"
}    

Что бы вы предложили, ребята? Дайте мне несколько советов? Помните, я изучаю эту игру, поэтому предложения, которые легко читать, если вы можете, пожалуйста.

Вот мой код, который я использую
C # page

        protected void btnUpld_Click(object sender, EventArgs e)
    {
        Stream theStream = file1.PostedFile.InputStream;

        using (StreamReader viewer = new StreamReader((Stream)file1.PostedFile.InputStream))
        {

            while (viewer.Peek() > 0) //Reads all text lines from imported .txt file that is imported into memory
            {
                String[] parts = viewer.ReadLine().Split(new[] { '=' }); //splits text lines at "="... They suggested I put this into a string to use as in the if/else... Would that be a simple approach?
                String variOutpt = parts.Length > 1 ? parts[0].Substring(".RES ".Length) : String.Empty; //Reads value after skipping over ".RES", before the "=" split
                String valOutpt = parts.Length > 1 ? parts[1] : String.Empty; //Reads value after the "=" split
                String otput = String.Format("{0}:<input type='text' value='{1}' /><br />", variOutpt, valOutpt); //Sets up format for variOutpt&valOutpt
                rslt.InnerHtml += otput; //Prints it all into a div on my aspx page
            }
        }
    }


На моей странице aspx висит материал ...

        <asp:FileUpload ID="file1" runat="server" />
        <asp:Button ID="btnUpld" runat="server" Text="Upload&Display" onclick="btnUpld_Click" />
        <div runat="server" id="rslt" />

1 Ответ

2 голосов
/ 20 октября 2011

String.StartsWith() хорошая идея, если она действительно отличает все допустимые строки от остальных.

Более мощным, но и более сложным способом было бы использование регулярных выражений.

Ваш код, кажется, нуждается:

while (viewer.Peek() > 0) 
{
    string line = viewer.ReadLine();
    if (! string startswith (".RES")
       continue;

    String[] parts = line .Split('=');  // note simplification   
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...