我需要获取此字符串的第一个字符:
try{
// open file then try to close
// try to parse integer
// another kind of exception throwing funcitons
}catch (Exception e){
return onErrorInt;
}
并在数字后加上';' ,如:4711; X。
我已经尝试过:
try{
// open file then try to close
// try to parse integer
// another kind of exception throwing funcitons
}catch (NumberFormatException e){
return // something;
} catch (IOException e){
// return same thing in the exception above
}
然后我明白了,但我能做得更好还是这是唯一可行的方法?
答案 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 :(得分:4)
不确定您正在寻找小型string
操作的性能,您的代码编写得很好并满足您的需求。
您可能会考虑的一个小问题是删除对输入字符串执行的其他拆分。
var subs = s.Split ("-");
String.Format ("{0};{1}", subs [1], subs [0]);
如果您正在寻找单线程(疯狂的程序员),这可能有所帮助。
string.Join(";", s.Split('-').Reverse())
答案 2 :(得分: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方法。