2009-11-17 10 views
18

最近、私は"に2つの "ex​​"と書くことができます。@文字列リテラルは便利ですが、タブや改行ではどうやって書くのですか?しかし、私はそれを見つけるcouldntの。C#@ ""タブを挿入するには?

答えて

25

@修飾子を使用している場合は、という文字列リテラルを使用しています。

これは、開始時と終了時の間に置かれたものが文字列内で使用されることを意味します。ただ、プレスタブ:

この

はCarraigeリターン、改行、タブ等

短い答えを含んでいます。

ただし、1つの警告。あなたのIDEは、タブ文字の代わりにスペースを挿入することがあるので、連結を使う方が良いかもしれません。

+0

、タブキーを押します。私の愚かなこと。私はIDEに注意を払う。 –

+6

あなたのコードを研削するいくつかのツールでは、タブが残っていない可能性があることに注意してください。リテラルのリテ​​ラルタブを使用することはまれであり、スペースにまったく何も変えないものを書き込んだ人の前提でもあります:-) – Joey

8

引用符のエスケープシーケンス"")はverbatim string literalsで働く唯一の「エスケープ」されていること。通常の文字列リテラル内の他のすべてのエスケープのみ作品。

回避策としてこのような醜い何かを使うかもしれません:

string.Format(@"Foo{0}Bar", "\t"); 

文字列内に実際のタブ文字を含めるか、

@"Foo 
Bar"; 
+0

これは私がそれをやる方法です。私はいつもどんなテキストを一緒にマージする場所でもフォーマット文字列を使用します。 –

+0

文字列を連結するには、より良いオプションがあります:-)。私は 'string.Concat'(' + '演算子で舞台裏で使われています)を完全に忘れました – Joey

-2

使用「\\ T:それはまた、通常、それは間違いなくはるかに簡単だ改行についても

:-)別のテキストエディタを存続しない、通常の文字列リテラルが、空白、特にタブで動作するはずです'を最初のバックスラッシュからエスケープすると、タブとして解釈されます。混乱のため残念です...このサイトは最初のスラッシュをエスケープしました。実際にこれを編集するときには3つのスラッシュがあります。

15

通常のエスケープシーケンスは、逐語的な文字列リテラルでは機能しません。あなたが最初の場所にするためにリテラルそのままの文字列を使用している何

string x = @"some\stuff" + "\t" + @"some more stuff"; 

:あなたはそこにあるタブをしたい場合は、実際のタブ文字を入れる、または文字列連結を使用する必要がありますどちらか?それを処理するより良い方法があるかもしれません。

+0

なぜ、私は通常の文字列連結の' string.Format'と* not *を考えましたか?ああ。 – Joey

+1

文字列の追加とインターンとの競合が正しく機能していませんか? –

+0

おそらく、書籍やウェブ上のC#のフォーマットスタイルの例に偏っているように思えるかもしれません。個人的には、私はWriteLine( "Name =" + nameVar)を好む。シンプルな書式設定アプリケーション用。 –

1

@構文を使用すると、すべての文字エスケープが無効になります。したがって、タブまたは改行を取得するには、リテラルTABまたは改行を挿入する必要があります。簡単です - キーボードのTABまたはENTERボタンを押すだけです。リテラルTAB文字の代わりにスペースを入力するように設定されている場合は、Visual Studioの動作を変更する必要があります。文字列の前に

+0

確かに。私はそれを混乱させた言語を疑問に思いますか?一定。 –

1

@あなたは何のエスケープを持っていないと仮定し、あなたが連結する必要があります:

string value = @"Hello ""big""" +"\t"+ @"world \\\\\"; 

換言すれば、はい「」使用可能な唯一のトリックです。

+1

@を2番目の文字列の前に置いてください。 @ "こんにちは" + "\ t" + @ "世界"; –

1

文字列内に特殊文字が必要な場合は、通常の文字列を使用し、@ ""を使用する代わりに\を使用してエスケープする必要があります。

文字列にどのような種類のデータを格納していますか?あなたがそれを必要としている理由は何ですか?

2

あなたはタブや改行も、間に何かを置くことができ、@の文字列を開始すると:

string test = @"test 

bla 

bjkl"; 

上記の文字列は4つの改行が含まれています。

0

文字列にタブまたは改行を書きます。 @ ""文字列リテラルは、すべての文字をコードファイルに書かれているとおりに認識します。逆に、エスケープシーケンスは機能しません。

0

エディタではスペースを少し挿入する可能性があるので、必ずタブを入力してください。 \ tを使用する方が良い方法です。

0

これを行うにはcorrectest方法:

string str = string.Format(
    CultureInfo.CurrentCulture, // or InvariantCulture 
    @"abc{0}cde", 
    "\t"); 

string str = string.Format(
    CultureInfo.CurrentCulture, // or InvariantCulture 
    @"abc{0}cde", 
    Environment.NewLine); 

あなたは、文字列で{0}のもっとそして1つの外観を持つことができます。

関連する問題