タグ付けされた質問 「string-interpolation」

文字列補間は、文字列内の定義された文字シーケンスを指定された値で置き換えることです。この表現は、連結演算子を使用した複数の文字列と値の構成よりも、コンテンツのフォーマットと定義に関してより直感的であると見なすことができます。文字列補間は通常、PHP、Haxe、Perl、Ruby、Python、C#(6.0以降)などの多くのプログラミング言語の言語機能として実装されます。


16
連結せずにJavaScriptで文字列の変数を補間する方法は?
PHPでは、次のようなことができることを知っています。 $hello = "foo"; $my_string = "I pity the $hello"; 出力: "I pity the foo" これと同じことがJavaScriptでも可能かどうか疑問に思っていました。連結を使用せずに文字列内で変数を使用する—書く方が簡潔でエレガントに見えます。


15
PHP-改行文字を作成する方法は?
PHPでは、改行文字を作成しようとしています。 echo $clientid; echo ' '; echo $lastname; echo ' '; echo '\r\n'; その後、作成したファイルをメモ帳で開き、文字どおり改行を書き込みます。 1ジョンDoe \ r \ n 1ジョンDoe \ r \ n 1ジョンDoe \ r \ n のさまざまなバリエーションを試しました\r\nが、どれも動作しません。改行が改行にならないのはなぜですか?


1
逐語的文字列を補間でどのように使用しますか?
C#6には、補間された文字列という新しい機能があります。 これらを使用すると、インデックスに依存するのではなく、式をコードに直接配置できます。 string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); になる: string s = $"Adding \"{x}\" and {this.Y()} to foobar."; ただし、次のように逐語的文字列(主にSQLステートメント)を使用して、複数行にわたって多くの文字列があります。 string s = string.Format(@"Result... Adding ""{0}"" and {1} to foobar: {2}", x, this.Y(), x.GetLog()); これらを通常の文字列に戻すのは面倒です: string s = "Result...\r\n" + $"Adding \"{x}\" and {this.Y()} to foobar:\r\n" …


3
文字列補間とString.Format
文字列補間の使用には顕著なパフォーマンスの違いがありますか? myString += $"{x:x2}"; vs String.Format()? myString += String.Format("{0:x2}", x); Resharperが修正を促しているため、私は質問しているだけで、以前はだまされていました。


10
f文字列の評価を延期/延期するにはどうすればよいですか?
私はテンプレート文字列を使用していくつかのファイルを生成していますが、以前のテンプレートコードを次のようなものから減らすために、この目的のための新しいf文字列の簡潔さが気に入っています。 template_a = "The current name is {name}" names = ["foo", "bar"] for name in names: print (template_a.format(**locals())) これで、変数を直接置き換えて、これを行うことができます。 names = ["foo", "bar"] for name in names: print (f"The current name is {name}") ただし、テンプレートを他の場所(コードの上位)で定義したり、ファイルなどからインポートしたりすることが理にかなっている場合があります。これは、テンプレートがフォーマットタグを含む静的な文字列であることを意味します。文字列を新しいf文字列として解釈するようにインタプリタに指示するには、文字列に何かが発生する必要がありますが、そのようなことがあるかどうかはわかりません。 文字列を取り込んで、.format(**locals())呼び出しの使用を回避するためにf文字列として解釈する方法はありますか? 理想的にmagic_fstring_functionは、このようにコーディングできるようにしたいです...(私が理解していない部分がどこにあるのか): template_a = f"The current name is {name}" # OR [Ideal2] template_a = magic_fstring_function(open('template.txt').read()) names …

4
二重引用符で囲まれた文字列でオブジェクトのプロパティをどのように使用できますか?
私は次のコードを持っています: $DatabaseSettings = @(); $NewDatabaseSetting = "" | select DatabaseName, DataFile, LogFile, LiveBackupPath; $NewDatabaseSetting.DatabaseName = "LiveEmployees_PD"; $NewDatabaseSetting.DataFile = "LiveEmployees_PD_Data"; $NewDatabaseSetting.LogFile = "LiveEmployees_PD_Log"; $NewDatabaseSetting.LiveBackupPath = '\\LiveServer\LiveEmployeesBackups'; $DatabaseSettings += $NewDatabaseSetting; 文字列実行コマンドでプロパティの1つを使用しようとすると: & "$SQlBackupExePath\SQLBackupC.exe" -I $InstanceName -SQL ` "RESTORE DATABASE $DatabaseSettings[0].DatabaseName FROM DISK = '$tempPath\$LatestFullBackupFile' WITH NORECOVERY, REPLACE, MOVE '$DataFileName' TO '$DataFilegroupFolder\$DataFileName.mdf', MOVE …

1
中括弧がないのに、Rubyで文字列補間が機能するのはなぜですか?
Rubyで文字列補間を使用する適切な方法は次のとおりです。 name = "Ned Stark" puts "Hello there, #{name}" #=> "Hello there, Ned Stark" それが私がいつも使っている方法です。 しかし、Rubyの文字列補間に何か奇妙なことに気づきました。文字列補間は、インスタンス変数に関して中括弧なしでRubyで機能することに気づきました。例えば: @name = "Ned Stark" puts "Hello there, #@name" #=> "Hello there, Ned Stark" そして、非インスタンス変数と同じことを試みても機能しません。 name = "Ned Stark" puts "Hello, there, #name" #=> "Hello there, #name" 私はこれを1.9.2と1.8.7の両方で成功させて試しました。 なぜこれが機能するのですか?通訳はここで何をしていますか?

8
解決方法「文字列補間は、オプション値のデバッグ記述を生成します。これを明示するつもりでしたか?」Xcode 8.3ベータ版では?
ベータ8.3以降、無数の警告「文字列補間はオプション値のデバッグ記述を生成します。これを明示的にするつもりでしたか?」私のコードに現れました。 たとえば、次の状況で警告が表示され、オプションがnilになる可能性があります。 let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)" 以前に設計したように、私(およびコンパイラ)はオプションを「nil」として補間しても問題ありませんでした。しかし、コンパイラは考えを変えました。 コンパイラーが提案するのは、次のような説明を含むStringコンストラクターを追加することです。 let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)" 明らかに、結果は明白ですが、私の意見では非常に面倒でもあります。より良いオプションはありますか?これらの警告をすべて修正する必要がありますか、それとも次のベータ版を待つ必要がありますか?

7
C#6で文字列補間でエスケープ文字を使用するにはどうすればよいですか?
私は文字列補間を使用していて、それを気に入っていますが、出力にバックスラッシュを含めようとしているのに、それを機能させることができないという問題があります。 私が欲しいのはこのようなものです。 var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\{userName}" コンボの出力を myDomain\myUserName 私が得ているのは、\がエスケープ文字であるという構文エラーです。\\を入力すると、snytaxエラーはなくなりますが、出力はmyDomain \\ myUsernameです。 補間文字列にエスケープ文字を含めるにはどうすればよいですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.