bugfix> c# > 投稿

hello.txt という名前のテキストファイルがあります次のテキストを使用します。

[Hello] this is stack overflow and I Love [THIS] a lot. I use [Stack] for help.

私はちょうど [ ] が欲しい(括弧文字列)リストボックス内。

私は試した:

using (StringReader reader = new StringReader(File Location))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        string input = line;
        string output = input.Split('[', ']')[1];
        MessageBox.Show(output);
    }
}

しかし、これは私にはうまくいきません。

回答 4 件
  • これはあなたが探しているものです

    string a = "Someone is [here]";
    string b = Regex.Match(a, @"\[.*?\]").Groups[0].Value;
    Console.WriteLine(b);
    //or if you need all occurences
    foreach(Match match in Regex.Matches(a, @"\[.*?\]"))
    {
        Console.WriteLine(match.Groups[0].Value);
    }
    
    

  • 3つのパラメーターの最初の入力文字列、開始文字列と終了文字列を受け入れ、これら2つの文字列間の値のリストを返す関数を作成できます

    private static IEnumerable<string> GetListOfString(string input, string start, string end)
    {
       var regex = new Regex(Regex.Escape(start) + "(.*?)" + Regex.Escape(end));
       var matches = regex.Matches(input);
       return (from object match in matches select match.ToString()).ToList();
    }
    
    

  • 次のような正規表現を使用できます。

    var pattern = @"\[[^\]]*]";
    while ((line = reader.ReadLine()) != null) {
        var matches = Regex.Matches(line, pattern);
        foreach (var m in matches) {
            MessageBox.Show(m);
        }
    }
    
    

    このパターンは、閉じ角括弧ではない角括弧間のすべてを探します。

    かっこ自体ではなく、かっこの間の文字列が必要な場合は、各一致からかっこを削除できます。

    MessageBox.Show(m.Value.Substring(1, m.Value.Length - 2));
    
    

    または、次のパターンを使用できます。

    var pattern = @"\[([^\]]*)]";
    while ((line = reader.ReadLine()) != null) {
        var matches = Regex.Matches(line, pattern);
        foreach (Match m in matches) {
            MessageBox.Show(m.Groups[1]);
        }
    }
    
    

  • LINQを使用して別の方法でこれを行う

    string[] text = "[Hello] this is stack overflow and I Love [THIS] a lot. I use [Stack] for help.".Split(' ');
    var wantedString = text.Where(s => s.StartsWith("[") && s.EndsWith("]"));
       foreach(string word in wantedString)
          {
               Console.WriteLine(word);
          }
    
    

あなたの答え