2017-03-29 9 views
2

文字列を切り捨てたり、空白で埋めたりして、固定長(C#の場合)に一文字を設定する方法はありますか?例えばCで文字列を固定長に切り詰める方法#

string s1 = "abcdef"; 
string s2 = "abc"; 

長さ5の両方を設定した後、我々は持っている必要があります。

"abcde" 
"abc " 
+0

https://msdn.microsoft.com/en-us/library/system.string.format.aspxを使用することができます?? – Ingenioushax

答えて

4

必要なのは、(sourcenullではないことを提供する)Substring続いPadRightです:

source 場合
string source = ... 
int length = 5; 

string result = source.PadRight(length).Substring(0, length); 

nullすることができ:

string result = source == null 
    ? new string(' ', length) 
    : source.PadRight(length).Substring(0, length); 
-1

あなたはstring.PadLeftまたはstring.PadRighthttps://msdn.microsoft.com/en-us/library/66f6d830(v=vs.110).aspx

+0

ちょうど好奇心から、文字列の実際の長さより短い長さに文字列を埋め込むとどうなりますか? –

+0

これは、埋め込みのために機能します。 – Graham

+0

@Grahamは文字列の長さを取得し、 'Substring'を使用しますか?これはフレームワーク –

0

を使用することができますが、あなたは s1.PadLeftを試してみました(5)。

あなたは、スペース

s1.PadLeft(6, '.'); 

以外の何かがあなたを与えるだろうしたい場合、あなたはまた、パディングのための文字を指定することができます「ABCDEFを」両方を行うには

var s1 = "1234567890"; 
var s2 = s1.SubString(5).PadLeft(5); 
+0

にあるのはあまりにも些細なので、あらかじめ作成されたメソッドはありません申し訳ありませんが、 's1.SubString(5).PadLeft(5);'は '67890'です。 *例外の場合は 's1 =" 123 "' –

2
private string fixedLength(string input, int length){ 
    if(input.Length > length) 
     return input.Substring(0,length); 
    else 
     return input.PadRight(length, ' '); 
} 
+0

私は1ライナーを望んでいましたが、私はこれに頼らなければならないと思われました – Graham

+0

's1.Length> 5? s1.Substring(0,5):s1.PadRight(5) 'は – Graham

+0

を実行しなければならないでしょう@Grahamはちょうどあなたが三項演算子を使うことを提案しようとしていました。しかし、それはコードをより醜いものにする。 – waka

0

組み込みとカスタムの2つのオプションがあります。

あなたはこのように、String.Formatの機能を使用することができます:strはフォーマットしたい文字列です

String.Format("{0:-5", str); 

{0}はその文字列を表し、​​は5文字の文字列で左揃えを指定します。右揃えにするには、単に:5を使用します。

カスタムライナーはstr.PadRight(5 - str.Length);です。私はそれが他の答えよりも効率的だと信じています。文字列strnullかもしれない場合は、

str = str?.PadRight(5- str.Length) ?? new string(' ', 5); 
関連する問題