112

私はC#で次のことをしたいと思います(Pythonのバックグラウンドから来ています):

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

文字列内のトークンを文字列外の値に置き換えるにはどうすればよいですか?

4

15 に答える 15

278

これは、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言語プレビュー

于 2014-11-17T17:01:46.827 に答える
85
string mystr = string.Format("This is {0}overflow", strVar);

また、インデックスの代わりに名前付きパラメータを使用することもできます。

于 2012-02-19T23:00:34.670 に答える
14

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();
于 2012-02-19T23:10:00.283 に答える
12

現在C#6.0でVisual Studio 2015を使用している場合は、次のことを試してください。

var strVar = "stack";

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

この機能は文字列補間と呼ばれます。

于 2015-01-19T01:36:22.293 に答える
11

C#6.0

string mystr = $"This is {strVar}overflow";
于 2016-03-03T16:44:46.073 に答える
6

そのための演算子はありません。を使用する必要がありますstring.Format

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

残念ながらstring.Format静的メソッドなので、単純にを書くことはできません"This is {0}soverflow".Format(strVar)。この構文を可能にする拡張メソッドを定義している人もいます。

于 2012-02-19T22:59:55.583 に答える
5

使用string.Format

string mystr = string.Format("This is {0}overflow", "stack");
于 2012-02-19T23:00:55.893 に答える
4

を使用する必要がありますString.Format()。構文は少し異なり、代わりに数値のプレースホルダーが使用されます。

例:

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

詳細については、http://msdn.microsoft.com/en-us/library/system.string.format.aspxを参照してください。

于 2012-02-19T23:02:42.070 に答える
1

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";
于 2012-02-19T23:04:12.883 に答える
0

使用する:

strVar = "stack"
mystr  = String.Format("This is {0}", strVar);
于 2012-02-19T23:01:56.267 に答える
0

Expansiveでこれを達成できます:https ://github.com/anderly/Expansive

于 2014-02-18T09:42:01.140 に答える
0

文字列を使用してプレースホルダーを実装するもう1つの方法があります。置換は、特定の状況で奇妙なことに役立ちます。

mystr = mystr.Replace("%soverflow", strVar);
于 2017-04-13T10:01:58.577 に答える
0

次のように使用できます

文字列補間

$特殊文字は、文字列リテラルを補間文字列として識別します。例えば

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));
于 2019-04-15T13:06:03.153 に答える
0

基本的な例

        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#での文字列補間と例

于 2020-09-04T14:28:36.927 に答える
-1

ドル記号と中かっこを使用できます。

Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");

こちらのドキュメントをご覧ください。

于 2020-09-15T07:42:24.747 に答える