从C#中的字符串中删除中间子串

时间:2014-07-01 11:10:14

标签: c#

我正在练习C#

我想从char数组中删除中间的Substring并将其添加到fornt

示例1

  

char array =" Fbh3dfbn8"

删除子串3到7并在开头添加:

  

char array =" 3dfFbhbn8"

示例2

  

char array = E5SS6SkGDE

子串4到7被删除并在开头添加:

  

char array = S6SkE5SGDE

基本上我想将字符串分成3个部分,其中第1个和第3个子字符串的长度相同。

if (charArray.ToString().Length % 2 != 0 && charArray.ToString().Length >= 3)
{
    string subStringCharArray = charArray.ToString().Substring(charArray.ToString().Length / 2 - 1, 3);
    charArray.ToString().IndexOf(subStringCharArray);
    string changedString = subStringCharArray + charArray.ToString();

} 

这是我的代码。在subStringCharArray条件内的点字符串if处,我总是在Char数组中得到m.C as a output.But there is no m.C`。

任何人都可以帮助我或指导我制作这种方法。

由于

3 个答案:

答案 0 :(得分:1)

使用new String(charArray)代替charArray.ToString()

Char[] charArray = new Char[]{'a', 'b', 'c'};

charArray.ToString()不会成为" abc"串。它将是System.Char []'对于任何可能的阵列。

另外

charArray.ToString().IndexOf(subStringCharArray);

不会在数组和字符串中更改任何内容。它只返回子字符串的索引 - 数字。它不会修改任何内容。

您可以尝试以下方式:

            Char[] charArray = new Char[] { '1', '2', '3', '4', '5', '6', '7' };
            String charArrayAsString = new String(charArray);

            String result = null;

            if (((charArrayAsString.Length % 2) != 0) &&
                 (charArrayAsString.Length >= 3))
            {
                Int32 middleBegins = charArrayAsString.Length / 2 - 1;
                Int32 middleLen = 3;

                result = charArrayAsString.Substring(middleBegins, middleLen) +
                    charArrayAsString.Substring(0, middleBegins) +
                    charArrayAsString.Substring(middleBegins + middleLen);                    
            }

            Console.WriteLine(result);

答案 1 :(得分:0)

除以3:

string str1 = "Fbh3dfbn8";
int partLength = str1.Length / 3;
string result = string.Format("{0}{1}{2}", 
    str1.Substring(partLength, str1.Length - (2 * partLength)),
    str1.Remove(partLength),
    str1.Substring(str1.Length - partLength));

如果您坚持使用char[],则很容易从string通过构造函数获取char[]或通过char[]返回string.ToCharArray

答案 2 :(得分:0)

试试这个:

string input = "E5SS6SkGDE";

char[] array = input.ToCharArray();

var result =
    array.Skip(3).Take(4)
        .Concat(array.Take(3))
        .Concat(array.Skip(7))
        .ToArray();

var output = new string(result);

我得到的结果是S6SkE5SGDE