我需要得到这个字符串的第一个字符:删除一个字符串的第一个字符,并追加到结束串
String s = "X-4711";
并把它在数字后面有“;” ,如:4711; X。
我已经有尝试过:
String x = s.Split("-")[1] + ";" + s.Split("-")[0];
然后我得到它,但我可以做的更好或者这是唯一可行的办法?
我需要得到这个字符串的第一个字符:删除一个字符串的第一个字符,并追加到结束串
String s = "X-4711";
并把它在数字后面有“;” ,如:4711; X。
我已经有尝试过:
String x = s.Split("-")[1] + ";" + s.Split("-")[0];
然后我得到它,但我可以做的更好或者这是唯一可行的办法?
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])}";
Upvoted这一个,我只会添加一个小的改变来使用string.format:String.Format($“{items [1]}; {items [0]}”); –
@PedroG.Dias假设OP使用c#6 ofc。 –
我们都不是? :) –
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方法。
'input.Substring(2)'没有'length - 2'。 – i486
是请参阅代码中的注释行。那就是我写的 –
不知道你在寻找什么性能的小string
操作,你的代码写得很好,满足你的需求。
您可能会考虑的一件小事是移除对输入字符串执行的附加拆分。
var subs = s.Split ("-");
String.Format ("{0};{1}", subs [1], subs [0]);
如果你正在寻找单线程(疯狂的程序员),这可能会有所帮助。
string.Join(";", s.Split('-').Reverse())
首先,它是'拆分'而不是'拆分'。 C#区分大小写。其次,您的解决方案非常简单,易于理解和高效,我认为基于您的意见。你的意思是_better_究竟是什么意思?当然你可以找到其他方法,但我认为你的解决方案是好的。如果你认为这不够好,至少应该解释_why_。 –
'String result = s.Substring(2)+“;” + s.Substring(0,1);' –
我不喜欢这个双'斯普利特'我希望它有点干净。 –