簡體   English   中英

替換單詞中的字母

[英]Replacing letters in words

您好,我在代碼的這一方面遇到了一些麻煩。 我有一些字符串,並且有一些字符。 我正在嘗試用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

您可以將字符串視為一個字符數組,因此結果可能是這樣的(假設您有一個單詞數組,不僅有兩個單詞變量,而且還有一個替代字符的小助手)

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);
}

這樣的東西?

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);
    }
}

我認為這樣可以滿足您的需求:

        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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM