私はC#で次のことをしたいと思います(Pythonのバックグラウンドから来ています):
strVar = "stack"
mystr = "This is %soverflow" % (strVar)
文字列内のトークンを文字列外の値に置き換えるにはどうすればよいですか?
私はC#で次のことをしたいと思います(Pythonのバックグラウンドから来ています):
strVar = "stack"
mystr = "This is %soverflow" % (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);
追加リソース:
string mystr = string.Format("This is {0}overflow", strVar);
また、インデックスの代わりに名前付きパラメータを使用することもできます。
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でVisual Studio 2015を使用している場合は、次のことを試してください。
var strVar = "stack";
string str = $"This is {strVar} OverFlow";
この機能は文字列補間と呼ばれます。
C#6.0
string mystr = $"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を参照してください。
2つのオプションがあります。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";
使用する:
strVar = "stack"
mystr = String.Format("This is {0}", strVar);
Expansiveでこれを達成できます:https ://github.com/anderly/Expansive
文字列を使用してプレースホルダーを実装するもう1つの方法があります。置換は、特定の状況で奇妙なことに役立ちます。
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));
基本的な例:
var name = "Vikas";
Console.WriteLine($"My name is {name}");
特殊文字の追加:
string name = "John";
Console.WriteLine($"Hello, \"are you {name}?\", but not the terminator movie one :-{{");
//output-Hello, "are you John?", but not the terminator movie one :-{
トークンを値に置き換えるだけでなく、C#の文字列補間でさらに多くのことができます
式の評価
Console.WriteLine($"The greater one is: { Math.Max(10, 20) }");
//output - The greater one is: 20
メソッド呼び出し
static void Main(string[] args)
{
Console.WriteLine($"The 5*5 is {MultipleByItSelf(5)}");
}
static int MultipleByItSelf(int num)
{
return num * num;
}
出典:C#での文字列補間と例
ドル記号と中かっこを使用できます。
Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");
こちらのドキュメントをご覧ください。