2016-01-18 41 views
8

ho bisogno di ottenere il primo carattere di questa stringa:Eliminare il primo carattere di una stringa e aggiungere alla fine della stringa

String s = "X-4711"; 

E metterlo dopo il numero con un ';' , come: 4711; X.

Ho già provato con:

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

poi ho capito, ma posso farlo meglio o è questo l'unico modo possibile?

+1

Prima di tutto, è 'Split' not' split'. C# è sensibile al maiuscolo/minuscolo. In secondo luogo, la tua soluzione è abbastanza semplice, comprensibile ed efficiente, penso in base al tuo contributo. Cosa intendi con _ meglio? Esattamente? Certo, puoi trovare altri modi, ma la tua soluzione è buona a mio parere. Se pensi che questo non sia abbastanza buono, spiega _why_ almeno. –

+0

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

+0

Non mi piace questo doppio' Split' lo voglio un po 'più pulito. –

risposta

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

Al massimo questo lo rende un po 'più leggibile e una micro-ottimizzazione di dover solo dividere una volta.

EDIT:

Come alcuni dei commenti hanno sottolineato, se si sta utilizzando C# 6 si può fare uso di String Interpolation per formattare la stringa. Fa esattamente la stessa cosa, sembra solo un po 'meglio.

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

Ho svitato questo, vorrei solo aggiungere una piccola modifica all'uso di string.format: String.Format ($ "{items [1]}; {items [0]}"); –

+0

@ PedroG.Dias supponendo che OP stia utilizzando C# 6 ofc. –

+0

Non siamo tutti? :) –

2

String.Substring: recupera una sottostringa da questa istanza. La sottostringa inizia in una posizione di carattere specificata e ha una lunghezza specificata.

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; 

si chiama il metodo Substring per estrarre una sottostringa da una stringa che inizia in una posizione di carattere specificato e termina prima della fine della stringa. La posizione del personaggio iniziale è a base zero; in altre parole, il primo carattere nella stringa è all'indice 0, non all'indice 1. Per estrarre una sottostringa che inizia in una posizione di carattere specificata e continua fino alla fine della stringa, chiamare il metodo Substring.

+0

'input.Substring (2)' fa lo stesso - senza 'length - 2'. – i486

+0

si vedere la riga commentata nel codice. Questo è quello che ho scritto –

4

Non sai quale sia la prestazione che stai cercando per le piccole operazioni string, il tuo codice è ben scritto e soddisfa le tue esigenze.

Una piccola cosa che si potrebbe considerare è la rimozione dello split aggiuntivo eseguito sulla stringa di input.

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

Se si sta osservando il single liner (programmatore pazzo), questo potrebbe essere d'aiuto.

string.Join(";", s.Split('-').Reverse()) 
Problemi correlati