어떻게 당신은 당신이라는 형식 문자열에서[중복]
-
03-07-2019 - |
문제
이 질문은 이미 있는 대답을 여기:
나가려고 일부를 생성하는 코드에서 런타임이 내가 어디에 넣어 일부 보일러 플레이트 재료와 사용자가 허용 입력해 실제 작동 코드입니다.내 보일러 플레이트 코드는 다음과 같은 형태입니다:
using System;
public class ClassName
{
public double TheFunction(double input)
{
// user entered code here
}
}
이상적으로 생각하고 싶 사용할 문자열.형식으로 삽입하려면 사용자 코드를 만들어 클래스 이름은,그러나 나는 예외가에서 형식 문자열하지 않는 한 그것은 다음과 같습니다:
string formatString = @"
using System;
public class ClassName
{0}
public double TheFunction(double input)
{0}
{2}
{1}
{1}";
그때 나는 문자열입니다.형식은 다음과 같다:
string entireClass = string.Format(formatString, "{", "}", userInput);
이것은 잘하고 나는 다룰 수 있는 면를 사용하{0}과{1}에서 형식 문자열에 장소의 중괄호를 제외하고는 지금 나의 사용자 입력을 사용할 수 없습니다 괄다.하는 방법이 있거나 탈출 중괄호 안에서 내 형식 문자열,또는 좋은 방법 중괄호를 사용자 코드로{0}'s 및{1}'s?
BTW,나는 이런 종류의 보안 문제를 일이 기다리고 있지만,이는 윈도우 폼 응용 프로그램를 위한 내부에서 사용하는 시스템에 인터넷에 연결되지 않도록 허용 가능한 위험에 상황이다.
해결책
탈출하여 그들을 두배로 하는 그들을:
string s = String.Format("{{ hello to all }}");
Console.WriteLine(s); //prints '{ hello to all }'
서 http://msdn.microsoft.com/en-us/netframework/aa569608.aspx#Question1
다른 팁
"{{"및"}}"
내가 무엇을 생각하는 당신이 원하는 것은 이...
string formatString = @"
using System;
public class ClassName
{{
public double TheFunction(double input)
{{
{0}
}}
}}";
string entireClass = string.Format(formatString, userInput);
더블 괄호: string.Format("{{ {0} }}", "Hello, World");
생산 것 { Hello, World }
추가 특별히 신중에서 액세스할 수 있는 사람 응용 프로그램입니다.더 나은 솔루션을 만들 수 있는 간단한 파서는 기대하고 몇 가지 제한되는,명령이 있습니다.