用文字代替字母

时间:2013-12-05 00:21:09

标签: c# arrays string

您好我的代码中的这一方面有点麻烦。我有一些字符串,我有一系列字符。我正在尝试替换每个字符串的最后两个字母 使用char数组中的字符直到最后一个。

我的char数组如下:

char[] array = { 'v', 'x', 'f' };

到目前为止我的代码:

char[] array = { 'v', 'x', 'f' };
        string newWord="";
        string apple="apple";
        string sam="sam";

        foreach(char c in array)
        {
            apple= apple.Substring(0, apple.Length - 2) +""; ///DON'T KNOW WHAT TO PUT HERE;
            sam= sam.Substring(0, sam.Length - 2)+""; ///DON'T KNOW WHAT TO PUT HERE;
            newWord = apple+Environment.NewLine+sam ;     
        }

输出应该是这样的:

appvx
sfm

也许我这样做错了,但是我明确告诉它在子字符串中去除字中的最后一个字母,但是如果数组用尽了它还不会删除最后两个字母。例如,sam这个词仍然需要在它的末尾有m,因为数组中的所有字符都已经被使用,就像out但是显示但是用f替换a

3 个答案:

答案 0 :(得分:1)

你可以将一个字符串视为一个字符数组,所以结果可以是这样的(假设你有一个单词数组,不仅有2个变量用于它们,还有一个小助手来替换字符)

var words = new [] {"apple", "sam"};
var wordPos = 0;
for (int i = 0; i < array.Length; i++)
{
  var wordLen = words[wordPos].Length;
  var letterPos = i % 2 == 0 ? 1 : 2;  
  words[wordPos] = words[wordPos].ReplaceAt(wordLen - letterPos, letter);
  if (letterPos == 1) wordPos++;
}

public static string ReplaceAt(this string input, int index, char newChar)
{
    if (input == null)
    {
        throw new ArgumentNullException("input");
    }
    char[] chars = input.ToCharArray();
    chars[index] = newChar;
    return new string(chars);
}

答案 1 :(得分:1)

这样的事情?

private static void something()
{
    List<char> tokens = new List<char>(new char[]{ 'v', 'x', 'f' });

    List<char[]> lArr = new List<char[]>();
    lArr.Add("apple".ToCharArray());
    lArr.Add("sam".ToCharArray());

    List<string> lStr = new List<string>();

    int cnt = 2;

    foreach (var token in tokens)
    {
        var aktArr = lArr.FirstOrDefault();
        if (aktArr == null)
            break;
        if (cnt == 0) 
        {
            cnt = 2;
            lStr.Add(new string(aktArr));
            lArr.RemoveAt(0);
            aktArr = lArr.FirstOrDefault();
            if (aktArr == null)
                break;
        }
        aktArr[aktArr.Length - cnt--] = token;
    }
    lStr.AddRange(lArr.Select(x => new string(x)));

    foreach (var item in lStr)
    {
        Console.WriteLine(item);
    }
}

答案 2 :(得分:1)

我认为这样的事情可以满足您的需求:

        var charArray = new[] {'a', 'b', 'c'};
        var words = new List<string> {"apple", "sam"};
        var currentWord = 0;
        var currentChar = 0;
        var charsToReplace = 2;

        while (currentChar < charArray.Length && currentWord != words.Count)
        {
            var word = words[currentWord].ToCharArray();
            word[word.Length - charsToReplace] = charArray[currentChar];
            words[currentWord] = new string(word);

            charsToReplace--;
            currentChar++;
            if (charsToReplace == 0)
            {
                charsToReplace = 2;
                currentWord++;
            }
        }

        words.ForEach(Console.WriteLine);