it-swarm.dev

문자열을 보간하는 방법

C #에서 다음을 수행하고 싶습니다 (Python background)).

strVar = "stack"
mystr  = "This is %soverflow" % (strVar)

문자열 내부의 토큰을 외부의 값으로 바꾸려면 어떻게합니까?

105
sazr
string mystr = string.Format("This is {0}overflow", strVar);

인덱스 대신 named parameters 을 사용할 수도 있습니다.

85
Darin Dimitrov

C # 6.0 (Visual Studio 2015+)부터 추가되었습니다.

예 :

var planetName = "Bob";
var myName = "Ford"; 
var formattedStr = $"Hello planet {planetName}, my name is {myName}!";
// formattedStr should be "Hello planet Bob, my name is Ford!"

다음에 대한 구문 설탕입니다 :

var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);

추가 자료 :

C # (v2) 토론을위한 문자열 보간

C # 6.0 언어 미리보기

268
Ashtonian

당신이 사용할 수있는 string.Format 값을 문자열로 삭제 :

private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");

대안은 C # 연결 연산자를 사용하는 것입니다.

var strVar = "stack";
var myStr = "This is " + strVar + "overflow";

많은 연결을 수행하는 경우 더 효율적인 StringBuilder 클래스를 사용하십시오.

var strVar = "stack";
var stringBuilder = new StringBuilder("This is ");
for (;;)
{
    stringBuilder.Append(strVar); // spot the deliberate mistake ;-)
}
stringBuilder.Append("overflow");
var myStr = stringBuilder.ToString();
14
David Clarke

현재 C # 6.0과 함께 Visual Studio 2015를 사용하는 경우 다음을 시도하십시오.

var strVar = "stack";

string str = $"This is {strVar} OverFlow";

이 기능을 문자열 보간이라고합니다.

12
Sakal

이에 대한 연산자가 없습니다. string.Format 를 사용해야합니다.

string strVar = "stack";
string mystr  = string.Format("This is {0}soverflow", strVar);

불행히도 string.Format는 정적 메서드이므로 "This is {0}soverflow".Format(strVar)을 작성할 수 없습니다. 일부 사람들은이 구문을 허용하는 확장 방법을 정의했습니다.

6
CodesInChaos

string.Format :

string mystr = string.Format("This is {0}overflow", "stack");
5
Matthew Abbott

String.Format()을 사용해야합니다. 구문은 약간 다르며 대신 숫자 자리 표시자가 사용됩니다.

예:

String.Format("item {0}, item {1}", "one", "two")

자세한 내용은 http://msdn.Microsoft.com/en-us/library/system.string.format.aspx 를 참조하십시오.

4
Bruno Silva

문자열로 자리 표시자를 구현하는 또 다른 방법이 있습니다. 교체는 특정 상황에서 이상하게 도움이됩니다.

mystr = mystr.Replace("%soverflow", strVar);
1
Talha Imam

다음과 같은 방법으로 사용할 수 있습니다

문자열 보간

$ 특수 문자는 문자열 리터럴을 보간 된 문자열로 식별합니다. 예 :.

string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza  

보간 된 문자열은 보간 된 표현식을 포함 할 수있는 문자열 리터럴입니다. 보간 된 문자열이 결과 문자열로 해석되면 보간 된 표현식이있는 항목은 표현식 결과의 문자열 표현으로 대체됩니다.

문자열 형식

객체, 변수 또는 표현식의 값을 다른 문자열에 삽입해야하는 경우 String.Format을 사용하십시오.

WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));
1
Sunil Dhappadhule

두 가지 옵션이 있습니다. String.Format을 사용하거나 연결 연산자를 사용할 수 있습니다.

String newString = String.Format("I inserted this string {0} into this one", oldstring);

OR

String newString = "I inserted this string " + oldstring + " into this one";
1
DwayneAllen

Expansive를 사용하여이 작업을 수행 할 수 있습니다. https://github.com/anderly/Expansive

0
anderly

용도:

strVar = "stack"
mystr  = String.Format("This is {0}", strVar);
0
Phillip Ngan