我正在练习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`。
任何人都可以帮助我或指导我制作这种方法。
由于
答案 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
。