C# 如何交换字符串变量中的两个字符?

C# 如何交换字符串变量中的两个字符?,c#,string,C#,String,我有一个字符串变量。我想交换字符串中的两个字符。 我想随机交换两个彼此接近的字符 这就是我所做的: 我曾经这样做过,但在某些方面我犯了错误 string word = txtWord.Text; Random rand = new Random(); int randomNumber= rand.Next(0, word.Length); string swappedWord = SwapCharacters(lastWord, randomNumber, randomNumber + 1);

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

这就是我所做的: 我曾经这样做过,但在某些方面我犯了错误

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
}

试试这个。还添加检查单词是否为空

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

试试这个。还添加检查单词是否为空

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

只需按以下方式更改行:

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

让我们看看它是否有效。

只需按如下方式更改行:

int randomNumber= rand.Next(0, word.Length -1 );
让我们看看它是否有效。

使用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]);
      }
    }
string input=“AXBYCZ”//样本串
StringBuilder输出=新的StringBuilder();
char[]characters=input.ToCharArray();
for(int i=0;i
使用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]);
      }
    }
string input=“AXBYCZ”//样本串
StringBuilder输出=新的StringBuilder();
char[]characters=input.ToCharArray();
for(int i=0;i
试试这段代码。更改代码是最容易的

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

试试这个代码。更改代码是最容易的

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

尝试
rand.Next(0,单词长度-1)你得到的错误是什么?@L.B不是高界非包容性的吗?@Mariostilov查看下一行
randomNumber+1
@L.B啊,是的。没有看到那个。请尝试
rand.Next(0,word.Length-1)你得到的错误是什么?@L.B不是高界非包容性的吗?@Mariostilov查看下一行
randomNumber+1
@L.B啊,是的。当我这么做的时候,我没有看到那个。我理解正确,但是如果单词只有1个字符,那么当我在swapcharates()方法中更改单词的位置时,我会出错。这是因为字符串中只有一个字符,并且在方法中也传递“randomNumber+1”。只需在其前面加上一个复选框,即sif(randomNumber