2016-01-18 38 views
8

の末尾に追加:は、文字列の最初の文字を削除し、私はこの文字列の最初の文字を取得する必要があり、文字列

String s = "X-4711"; 

をとして番号の後にそれを置きます「;」 4711; Xのようになります。

私はすでにでそれを試してみました:

String x = s.Split("-")[1] + ";" + s.Split("-")[0]; 

その後、私はそれを得るが、私は良いか、これが唯一の可能な方法でそれを行うことができますか?

+1

まず第一に、それは 'Split'ない' split'です。 C#は大文字と小文字を区別します第二に、あなたのソリューションは非常にシンプルで理解しやすく効率的です。私はあなたの意見に基づいて考えています。 _better_はどういう意味ですか?もちろん、あなたは別の方法を見つけることができますが、あなたのソリューションは私の意見では良いです。これで十分ではないと思うなら、少なくとも_why_を説明してください。 –

+0

'String result = s.Substring(2)+"; " + s.Substring(0、1); ' –

+0

私はこの二重' Split'が好きではありません。 –

答えて

18
var items = s.Split ("-"); 
string x = String.Format ("{0};{1}", items[1], items[0]); 

ほとんどの場合、これは少しだけ読みやすくなり、1回に分割しなければならないマイクロ最適化になります。

EDIT:あなたは、文字列をフォーマットするString Interpolationを利用することができますC#6を使用している場合は、コメントの一部として

は、指摘しています。まったく同じことですが、少しだけ良く見えます。

var items = s.Split ("-"); 
string x = $"{items[1]};{items[0])}"; 
+1

Upvotedこれ、私はString.Formatのの使用にマイナーチェンジを追加します。String.Formatのを($ "{商品[1]}; {アイテム[0]}")。 –

+0

@ PedroG.Dias OPがc#6cを使用していると仮定します。 –

+0

私たちは皆ではありませんか? :) –

2

String.Substring:このインスタンスから部分文字列を取得します。部分文字列は、指定された文字位置から始まり、指定された長さを持ちます。

string sub = input.Substring(0, 1); 
string restStr = input.Substring(2, input.length-2); 
// string restStr = input.Substring(2); Can also use this instead of above line 
string madeStr = restStr + ";" + sub; 

指定した文字位置から始まり、文字列の末尾の前に終了した文字列から部分文字列を抽出するためにsubstringメソッドを呼び出します。開始文字の位置は0から始まります。換言すれば、文字列の最初の文字は、インデックス0で、指定した文字位置から始まり、文字列の最後まで続く部分文字列を抽出しないようにインデックス1、サブストリングメソッドを呼び出しています。あなたは小さなstring操作のために探しているものの性能

+0

'input.Substring(2)'は同じことをします - 'length - 2'なし。 – i486

+0

はいコードのコメント行が表示されます。私が書いたこと –

4

わからない、あなたのコードがよく書かれており、あなたのニーズを満たすされます。あなたが考えるかもしれません

一つのマイナーな事は、入力文字列に対して実行される追加のスプリットを削除しています。

var subs = s.Split ("-"); 
String.Format ("{0};{1}", subs [1], subs [0]); 

あなたは、単一のライナー(クレイジープログラマ)探しているなら、これは役立つかもしれません。

string.Join(";", s.Split('-').Reverse()) 
関連する問題