У меня есть образец строковые данныеИзвлечение подстрок из большой строки C#?
string state="This item (@"Item.Price", "item") is sold with an price (@"Item.Rate", "rate") per (@"Item.QTY", "Qty")";
Я хочу вывод как
string subStr="Item.Price|Item.Rate|Item.QTY"
Может кто-то пожалуйста, предложить какое-то решение. Я пытаюсь прочитать эти данные из файла. У меня есть пример кода, как
if (!string.IsNullOrEmpty(state) && state != null)
{
while (state.IndexOf("Value(@\"") > 0)
{
int firstindex = state.IndexOf("(@\"");
int secondindex = state.IndexOf("\", \"");
if (firstindex > 0 && secondindex > 0)
{
keys.Add(state.Substring(firstindex + 3, secondindex - firstindex - 8));
state = state.Substring(secondindex + 3);
}
}
}
Когда данные велико, то это исключение:
Length cannot be less than zero
Может кто-нибудь предложить некоторые сопоставления с образцом механизма для этого.
вы должны использовать регулярное выражение – giammin
ошибка не потому, что ваш «данные большой» - ошибка совершенно ясно, что вы передаете число меньше нуля в качестве третьего параметра 'Подстрока'. Подумайте, как «secondindex - firstindex - 8» может оказаться меньше нуля и решить эту проблему. Кстати, ваша строка примера не включает значение «Значение (@» 'вообще ... – AakashM
Обычно проверяют на> = 0. Он может найти строку в первой позиции (0). Может быть, в этом случае нет . -1 - не найдено. – Frode