Не удается преобразовать из char в System.ReadOnlySpan
Компилятор жалуется на int.TryParse(operSum[indexOperSum]
Есть слово sumX_Y, нужно узнать X и Y, также Y может быть двухзначным, трехзначным и т.п
operSum является string типом
int indexOperSum = 5;
string stringIndex = "";
while (int.TryParse(operSum[indexOperSum], out int tryParse))
{
stringIndex += operSum[indexOperSum];
indexOperSum++;
}
int index = Convert.ToInt32(stringIndex);
Ответы (1 шт):
Автор решения: return
→ Ссылка
public static bool TryParseCommand(ReadOnlySpan<char> command, out int left, out int right)
{
const int minCmdLen = 6; // "sum0_0".Length == 6
const string cmdPref = "sum";
left = 0;
right = 0;
// проверяем длину команды
if (command.Length < minCmdLen) return false;
// проверяем наличие префикса "sum"
if (!command[..cmdPref.Length].Equals(cmdPref, StringComparison.Ordinal))
return false;
var sepInd = -1; // индекс разделителя '_'
// ищем `sepInd`
for (var i = cmdPref.Length; i < command.Length; i++)
if (command[i] == '_')
{
sepInd = i;
break;
}
// неудача, если не нашли
if (sepInd == -1) return false;
// выделяем буферы для левого и правого значений
var leftBuf = command[cmdPref.Length..sepInd];
var rghtBuf = command[(sepInd + 1)..];
// парсим буферы
if (!int.TryParse(leftBuf, out left)) return false;
if (!int.TryParse(rghtBuf, out right)) return false;
return true; // успех
}
Примечание: При копировании кода убрать комментарии!