如何在字符串变量中交换两个字符?

时间:2014-03-06 06:54:52

标签: c# string

我有一个字符串变量。我想交换字符串中的两个字符。 我想随机交换两个彼此接近的字符。

这就是我所做的: 我这样做了,但有些人说我得错了。

string word = txtWord.Text;
Random rand = new Random();
int randomNumber= rand.Next(0, word.Length);
string swappedWord = SwapCharacters(lastWord, randomNumber, randomNumber + 1);

private string SwapCharacters(string value, int position1, int position2)
{
    char[] array = value.ToCharArray(); // Convert a string to a char array
    char temp = array[position1]; // Get temporary copy of character
    array[position1] = array[position2]; // Assign element
    array[position2] = temp; // Assign element
    return new string(array); // Return string
}

4 个答案:

答案 0 :(得分:3)

使用StringBuilder:

//如果要替换

StringBuilder sb = new StringBuilder(theString);
    sb[index] = newChar;
    theString = sb.ToString();

//交换

 string input = "AXBYCZ"; //Sample String
    StringBuilder output = new StringBuilder();

    char[] characters = input.ToCharArray();

    for (int i = 0; i < characters.Length; i++)
    {
      if (i % 2 == 0)
      {
        if((i+1) < characters.Length )
        {
          output.Append(characters[i + 1]);
        }
                   output.Append(characters[i]);
      }
    }

答案 1 :(得分:1)

只需更改以下行:

int randomNumber= rand.Next(0, word.Length -1 );

让我们看看它是否有效。

答案 2 :(得分:0)

试试这个。如果单词为空,还要添加检查。

int randomNumber= rand.Next(0, word.Length - 1);

答案 3 :(得分:0)

试试这段代码。最容易更改代码

int randomNumber= rand.Next(0, word.Length-2);