1

ユーザー変数のエントリに基づいてテキスト ファイルから読み取ろうとしています

私のエントリには、「Big Fred」という名前のバリエーション (大文字/小文字) があります。

コードは実行されますが、結果が返されません。

私のラップトップのコードは、以下のコードから削除した特定の場所を指しています。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ReadTextFileWhile
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter the name you wish to search for: ");                       //Prompt user for the name they wish to search for
            string x = Console.ReadLine();                                                      //assign the name the user inputs as their search parameter to the value of x
            StreamReader myReader = new StreamReader("C:/insert location here");      //Read the the text file at this location and assign to myReader
            string line = "";                                                                   //asssign 'nothing' to line.

            while (line != null)                                                                //while line in the text file is not null (empty)
            {
                line = myReader.ReadLine();                                                     //pass contents of myReader to line
                if (line != null && line == x)                                                  //if contents of line are not null and equal to the variable in x print to screen
                    Console.WriteLine(line);
            }

            myReader.Close();                                                                   //close myReader properly
            Console.ReadLine();                                                                 //Readline to keep console window open allowing a human to read output.

        }
    }
}
4

3 に答える 3

1

大文字と小文字の違いを除外するstring.IndexOfとそのオーバーロードを試してください

line = myReader.ReadLine();                                                     
if (line != null && line.IndexOf(x, StringComparison.CurrentCultureIgnoreCase) >= 0)
      Console.WriteLine(line);
于 2013-04-20T15:59:06.953 に答える
1

caseInsensitive の方法で文字列を一致させたいだけです。.Equals を使用できます

if (line.Equals(x,StringComparison.InvariantCultureIgnoreCase));

もう1つのことは次のとおりです。-使用できます

String.IsNullOrWhiteSpace(line) or String.IsNullOrEmpty(line) 

nullかどうかをチェックする代わりに

于 2013-04-20T16:09:42.410 に答える
0

テキスト ファイルからすべての行を取得する理由は非常に単純です。Web ページまたは他の場所からテキスト コンテンツをコピーした可能性があります。そして、各行は \n または Environment.NewLine のいずれかの改行定数で区切られていません。したがって、ファイルを開き、各行の後に Enter キーを押して新しい行を手動で挿入するか、ファイルからすべてのテストを読み取り、ドット [.] 区切り記号で分割し、上記のコードを使用して個別に処理する必要があります。私は同じ問題に直面しましたが、今では正常に機能しています。

于 2013-04-21T12:01:45.990 に答える