替换字符串中的单个字符
Replace single character in a String
所以,我正在使用 unity,并且我有这个包含井字棋盘当前状态的字符串。看起来像这样:
XOX
ONX
OXX
"N" 中立 space.
问题是我想用 "X" 或 "O" 替换其中一个 "N"。
我尝试使用 :
board[n] = "X";
但我明白了
"property or indexer cannot be assigned, it is read only"
所以我想找到一种方法来改变其中一个 "N"。这是我的代码
if (manager.turn == 1 && !isUsed)
{
xSprite.enabled = true;
manager.board[int.Parse(gameObject.name)-1] = 'X';
manager.GameEndingDraw();
isUsed = true;
manager.turn = 2;
}
else if (manager.turn == 2 && !isUsed)
{
oSprite.enabled = true;
manager.board[int.Parse(gameObject.name)-1] = 'O';
manager.GameEndingDraw();
isUsed = true;
manager.turn = 1;
}
您可以使用以下 4 种方法:
ToCharArray
var array = board.ToCharArray();
array[indexOfNew] = newChar;
board = new string(array);
StringBuilder
var sb = new StringBuilder(board);
sb[indexOfNew] = newChar;
board = sb.ToString();
String.Remove 和 String.Insert
board = board.Remove(indexOfNew, 1)
.Insert(indexOfNew, newChar.ToString());
子字符串和字符串插值
board = $"{board.Substring(0, indexOfNew)}{newChar}{board.Substring(indexOfNew+1, board.Length-indexOfNew-1)}";
假设 board
包含原始字符串,newChar
包含新放置的 "piece" 并且 indexOfNew
包含您需要替换的字符串中的索引。
您当然可以将您选择的选项包装在扩展方法中:
public static string ReplaceAt(this string inputString, int newCharIndex, char newChar)
{
var newString = // Insert your choice of replacement from above here
return newString;
}
井字棋盘不是字符串,它是一个 3×3 的标记网格,例如字符。您应该将其表示为数组,而不是字符串:
var board = new char[3, 3];
for (int i = 0; i < board.GetLength(0); i++)
for (int j = 0; j < board.GetLength(1); j++)
board[i, j] = 'N';
然后您可以通过坐标设置每个标记:
board[0, 0] = 'X';
所以,我正在使用 unity,并且我有这个包含井字棋盘当前状态的字符串。看起来像这样:
XOX
ONX
OXX
"N" 中立 space.
问题是我想用 "X" 或 "O" 替换其中一个 "N"。 我尝试使用 :
board[n] = "X";
但我明白了
"property or indexer cannot be assigned, it is read only"
所以我想找到一种方法来改变其中一个 "N"。这是我的代码
if (manager.turn == 1 && !isUsed)
{
xSprite.enabled = true;
manager.board[int.Parse(gameObject.name)-1] = 'X';
manager.GameEndingDraw();
isUsed = true;
manager.turn = 2;
}
else if (manager.turn == 2 && !isUsed)
{
oSprite.enabled = true;
manager.board[int.Parse(gameObject.name)-1] = 'O';
manager.GameEndingDraw();
isUsed = true;
manager.turn = 1;
}
您可以使用以下 4 种方法:
ToCharArray
var array = board.ToCharArray();
array[indexOfNew] = newChar;
board = new string(array);
StringBuilder
var sb = new StringBuilder(board);
sb[indexOfNew] = newChar;
board = sb.ToString();
String.Remove 和 String.Insert
board = board.Remove(indexOfNew, 1)
.Insert(indexOfNew, newChar.ToString());
子字符串和字符串插值
board = $"{board.Substring(0, indexOfNew)}{newChar}{board.Substring(indexOfNew+1, board.Length-indexOfNew-1)}";
假设 board
包含原始字符串,newChar
包含新放置的 "piece" 并且 indexOfNew
包含您需要替换的字符串中的索引。
您当然可以将您选择的选项包装在扩展方法中:
public static string ReplaceAt(this string inputString, int newCharIndex, char newChar)
{
var newString = // Insert your choice of replacement from above here
return newString;
}
井字棋盘不是字符串,它是一个 3×3 的标记网格,例如字符。您应该将其表示为数组,而不是字符串:
var board = new char[3, 3];
for (int i = 0; i < board.GetLength(0); i++)
for (int j = 0; j < board.GetLength(1); j++)
board[i, j] = 'N';
然后您可以通过坐标设置每个标记:
board[0, 0] = 'X';