IT story

문자열을 어떻게 보간합니까?

hot-time 2020. 8. 10. 08:05
반응형

문자열을 어떻게 보간합니까?


C #에서 다음을 수행하고 싶습니다 (Python 배경에서 제공됨).

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

문자열 내부의 토큰을 외부 값으로 어떻게 바꾸나요?


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

인덱스 대신 명명 된 매개 변수사용할 수도 있습니다 .


이것은 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 언어 미리보기


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();

C # 6.0

string mystr = $"This is {strVar}overflow";

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

var strVar = "stack";

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

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


그것에 대한 운영자가 없습니다. 을 사용해야 string.Format합니다.

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

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


사용 string.Format:

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

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

예:

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

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


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

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

또는

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

string.Replace를 사용하여 자리 표시자를 구현하는 또 다른 방법이 있습니다.

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

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

문자열 보간

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

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

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

String.Format

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

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

사용하다:

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

Expansive : https://github.com/anderly/Expansive 로이를 수행 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/9354154/how-do-i-interpolate-strings

반응형