C#复制字符串的子字符串,然后将其放在该字符串的下一个单词之前

本文关键字:字符串 下一个 单词之 复制 然后 | 更新日期: 2023-09-27 17:57:49

我试图复制字符串中每个单词的最后一个字符,然后将复制的字符放在下一个单词的第一个位置。例如,如果我输入字符串"快速的棕色狐狸跳过懒惰的狗",输出应该是"the equick kbrown nfox xjumps sover rthe elazy ydog";

以下是我目前所拥有的:

string s = "The quick brown fox jumps over the lazy dog";
for (int a = 0; a < s.Length; a++)
{
    string b = s.Substring(a,1);
    if (b == " ")
    {
        string c = s.Substring(a - 1, 1);
        string d = s.Insert (a+1, c);
        Console.Write(d);                     
    }                
}

这样做的结果是:矮胖的棕色狐狸跳过懒狗。敏捷的棕色狐狸跳过懒惰的狗敏捷的棕色狐狸跳过懒惰的狗快速的棕色狐狸x跳o越过懒惰的狗敏捷的棕色狐狸跳过懒惰的狗快速的棕色狐狸跳过懒惰的狗敏捷的棕色狐狸跳过懒散的狗敏捷自己的狐狸跳过懒惰的ydog

我试图实现的是这个输出"The equick kbrown nfox xjumps sover rthe elazy ydog"

感谢所有顺便回答的人:)

C#复制字符串的子字符串,然后将其放在该字符串的下一个单词之前

也许:

string[] words = "The quick brown fox jumps over the lazy dog".Split();
string res = String.Join(" ", words.Select((w, i) => i == 0 ? w : words[i-1].Last() + w));

演示

The equick kbrown nfox xjumps sover rthe elazy ydog

这个怎么样?

string s = "The quick brown fox jumps over the lazy dog";
char lastChar = default(char);
bool addLastChar = false;
var stringBuilder = new StringBuilder(s);
for (int i = 0; i < stringBuilder.Length; i++)
{
    var ch = stringBuilder[i];
    // TODO: consider using char.IsWhiteSpace(ch) method call.
    // Please note: it will return true for different whitespace characters (tabulation, line feed, carriage return, etc).
    if (ch == ' ')
    {
        addLastChar = true;
    }
    else
    {
        if (addLastChar)
        {
            stringBuilder.Insert(i, lastChar);
            addLastChar = false;
        }
        lastChar = ch;
    }
}
var result = stringBuilder.ToString();

该代码也适用于中间有多个空格的字符串,如下所示:

string s = "The    quick    brown   fox jumps over the lazy dog";

创建一个新字符串(d),在其中插入一个字符,打印并忘记它。

你能做什么:

  • 把字符串分成单词
  • 更改单词
  • 将它们组合成一个新字符串
var words = s.Split(' ').Where(x=>x!="").ToArray();
var str = "";
var sb = new StringBuilder();
for(var i = 0; i< words.Lenght;i++)
{
    sb.Append(str);
    sb.Append(words[i]);
    sb.Append(" ");
    str = words[words.Lenght - 1].ToString();
}
var result = sb.ToString();

应该是这样的。

string S= "The quick brown fox jumps over the lazy dog";
                var splitString = S.Split(' ');
                string newS = splitString[0];
                for(int i=1;i<splitString.Length;i++)
                {
                    splitString[i] = splitString[0].ElementAt(splitString[0].Length) + splitString[i];
                    newS += " " + splitString[i];
                }
                Console.WriteLine(newS);

答案相对简单,可以使用拆分字符串

string[] sArray = s.Split(new char[]{' '});

然后遍历数组

for (int i = 1; i < sArray.Length; i++)
{
    sArray[i] = sArray[i - 1].Substring(sArray[i - 1].Length) + sArray[i];
}
s = string.Join(" ", sArray);