我想创建一个方法:public static string FrontBack(string str) {}
此方法应交换最后一个字符的第一个字符。
例如:Console.WriteLine(FrontBack("code"));
所以在这种情况下,我想替换char" c"用" e"结果应该是eodc。
答案 0 :(得分:1)
你的问题有点太容易了......所以我会给你一些非常复杂的代码:
public static string ExchangeFirstLast(string str)
{
var lst = new List<string>();
var enumerator = StringInfo.GetTextElementEnumerator(str);
while (enumerator.MoveNext())
{
lst.Add(enumerator.GetTextElement());
}
if (lst.Count >= 2)
{
string temp = lst[0];
lst[0] = lst[lst.Count - 1];
lst[lst.Count - 1] = temp;
}
string str2 = string.Concat(lst);
return str2;
}
此代码将尝试解决非BMP unicode字符和组成unicode字符的问题。请参阅 Tony的http://codeblog.jonskeet.uk/2009/11/02/omg-ponies-aka-humanity-epic-fail/,我希望您编写一些代码来反转字符串
答案 1 :(得分:0)
public static string FrontBack(string str) {
int len = str.Length;
return str[len-1] + str.Substring(1,len-2) + str[0];
}
答案 2 :(得分:0)
最简单的是:
string str = "code";
string FrontBackString = str.Length >= 2 ?
str[str.Length - 1] + str.Substring(1, str.Length - 2) + str[0]
: str;
答案 3 :(得分:0)
private static string FrontBack(string str)
{
if (string.IsNullOrWhiteSpace(str))
throw new ArgumentNullException("str");
if (str.Length == 1) return str;
var first = str[0];
var last = str[str.Length - 1];
return last + str.Substring(1, str.Length - 2) + first;
}
答案 4 :(得分:0)
在体育精神笔记上,使用StringBuilder的一个班轮(虽然没有检查字符串的有效性):
private static string FrontBack(string str)
{
return (new StringBuilder(str).Remove(str.Length - 1, 1)
.Remove(0, 1).Insert(0, str[str.Length - 1])
.Insert(str.Length - 1, str[0])).ToString();
}
// 1. Remove last character
// 2. Remove first character
// 3. Append last character to beginning
// 4. Append first character to the end