C#如何将第一个字符串与字符串中的最后一个字符交换

时间:2015-04-09 15:13:23

标签: c# string

我想创建一个方法:public static string FrontBack(string str) {}

此方法应交换最后一个字符的第一个字符。

例如:Console.WriteLine(FrontBack("code"));

所以在这种情况下,我想替换char" c"用" e"结果应该是eodc。

5 个答案:

答案 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