3

Visual Basic でコンソール ベースのアプリケーションを作成していて、問題が発生しました。コンソールに色を追加しようとしていますが、行内の 1 単語だけです。私はConsole.ForegroundColor = ConsoleColor.Redオプションを知っていますが、その色は行の1つの単語ではなく行全体です。以下にいくつかの例を示します。

サンプルコードは次のとおりです。

'If I use it like this the whole line will turn red
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("Hello stackoverflow, I need some help!")

上記のように、ライン全体が赤くなります。「stackoverflow」という単語だけを赤くして、文の残りの部分を通常の色のままにしたい場合はどうすればよいですか?

これを行うことは可能ですか?

前もって感謝します。

4

3 に答える 3

8
Console.Write("Hello ");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("stackoverflow");
Console.ResetColor();
Console.WriteLine(", I need some help!");

文字列をトークン化し、ある種のパターン マッチング関数を使用して、再利用可能なものを作成したい場合があります。

文字列内の単一の単語に色を付けます (カンマとピリオドを処理するロジックを追加します):

private static void colorize(string expression, string word) 
{
    string[] substrings = expression.Split();

    foreach (string substring in substrings)
    {
        if (substring.Contains(word))
        {
            Console.ForegroundColor = ConsoleColor.Red;
        }
        Console.Write(substring+" ");
        Console.ResetColor();
    }
    Console.WriteLine();
}
于 2013-10-27T23:49:39.210 に答える
0
Private Shared Sub colorize(ByVal expression As String, ByVal word As String)
    Dim substrings() As String = expression.Split()

    For Each substring As String In substrings
        If substring.Contains(word) Then
            Console.ForegroundColor = ConsoleColor.Red
        End If
        Console.Write(substring &" ")
        Console.ResetColor()
    Next substring
    Console.WriteLine()
End Sub
于 2016-08-04T23:51:30.563 に答える