2016-01-18 137 views
8

我需要得到这个字符串的第一个字符:删除一个字符串的第一个字符,并追加到结束串

String s = "X-4711"; 

并把它在数字后面有“;” ,如:4711; X。

我已经有尝试过:

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

然后我得到它,但我可以做的更好或者这是唯一可行的办法?

+1

首先,它是'拆分'而不是'拆分'。 C#区分大小写。其次,您的解决方案非常简单,易于理解和高效,我认为基于您的意见。你的意思是_better_究竟是什么意思?当然你可以找到其他方法,但我认为你的解决方案是好的。如果你认为这不够好,至少应该解释_why_。 –

+0

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

+0

我不喜欢这个双'斯普利特'我希望它有点干净。 –

回答

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

最多这使得它更具可读性和微分优化只需要分割一次。

编辑:

正如一些评论所指出的,如果你使用的是C#6你可以利用String Interpolation格式化字符串。它完全一样,只看起来好一点。

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

Upvoted这一个,我只会添加一个小的改变来使用string.format:String.Format($“{items [1]}; {items [0]}”); –

+0

@PedroG.Dias假设OP使用c#6 ofc。 –

+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处,而不是索引1.要提取从指定字符位置开始并继续到字符串末尾的子字符串,请调用Substring方法。

+0

'input.Substring(2)'没有'length - 2'。 – i486

+0

是请参阅代码中的注释行。那就是我写的 –

4

不知道你在寻找什么性能的小string操作,你的代码写得很好,满足你的需求。

您可能会考虑的一件小事是移除对输入字符串执行的附加拆分。

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

如果你正在寻找单线程(疯狂的程序员),这可能会有所帮助。

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