2012-06-22 2 views
3

내가 원한 특정 색상의 문자열에서 특정 문자의 색상을 어떻게 바꿀 수 있는지 궁금하다. 예를 들어C# 콘솔에서 문자열의 각 문자의 전경색을 변경하는 방법은 무엇입니까?

:

나는 "안녕하세요"빨간색에 "O"를 변경할
string letters = "Hello World"; //The string inputted. 

. 어떻게해야합니까? 나는 그것을 알고있다

Console.Foreground = ConsoleColor.Red; 

는 전체 문자열을 빨간색으로 바꿀 것이다. 특정 색상의 특정 문자를 변경하는 가장 좋은 코드는 무엇입니까? 미리 감사드립니다!

답변

8

가장 간단한 해결책은 될 것

var o = letters.IndexOf('o'); 
Console.Write(letters.Substring(0, o)); 
Console.ForegroundColor = ConsoleColor.Red; 
Console.Write(letters[o]); 
Console.ResetColor(); 
Console.WriteLine(letters.Substring(o + 1)); 
당신은 또한 당신이 colorise 할 임의의 문자열 또는 문자 작동하는 기능으로이 문제를 일반화 할 수

:

void WriteLineWithColoredLetter(string letters, char c) { 
    var o = letters.IndexOf(c); 
    Console.Write(letters.Substring(0, o)); 
    Console.ForegroundColor = ConsoleColor.Red; 
    Console.Write(letters[o]); 
    Console.ResetColor(); 
    Console.WriteLine(letters.Substring(o + 1)); 
} 

또 다른 옵션은 사용할 수 있습니다 "Hell&o World"과 같은 문자열을 검색하고 &은 빨간색으로 다음 문자를 인쇄한다는 것을 의미합니다.

+2

'Console.ResetColor()'는 색상을 다시 설정할 때 사용할 수 있습니다. – Damith

+0

오, 좋은. 새로운 것을 배웠습니다. 그러나 프로그램의 다른 곳에서 색상을 변경하면이 기능이 도움이되지 않습니다. – Joey

+0

It 전경 및 배경색을 기본값으로 설정하므로 이전 값을 유지하고 다시 할당 할 필요가 없습니다. 어쨌든 1+ – Damith

1
string letters = "Hello World"; 
Char[] array = letters.ToCharArray(); 

foreach (Char c in array) 
{ 
    if (c == 'o') 
    { 
     Console.ForegroundColor = System.ConsoleColor.Red; 
     Console.Write(c); 
    } 
    else 
    { 
     Console.ForegroundColor = System.ConsoleColor.White; 
     Console.Write(c); 
    } 
} 
Console.WriteLine(); 
Console.Read(); 
+0

이것은 '세계'에서 'o'를 색칠 할 것인데, 이는 내가 이해하는 한 요구 사항이 아니었다. – Joey

+0

사실, 참. 여기 오전 1시에 드리프트가 시작됩니다. – GrayFox374

+0

음, * 기술적으로 *'Hello '의'o '도 빨간색이기 때문에 잘못이 아닙니다;) – Joey

관련 문제