Как получить все после индекса конкретного символа до конца? - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь получить некоторую часть строки с помощью подстроки, и это моя строка: {"samanState":"OK","samanResNum":"97d590e2-9ce3-49f9-85cf-2228b33cad57","samanTraceNo":"479936"} Я не могу сделать что-то вроде этого: substring (8,16), потому что эта строка меняется каждый раз.Я хочу получить 479936 от этого.Я уверен, что TraceNo":" является статичным и никогда не меняется, поэтому я сделал это:

<td>@(bankDepositHistoryItem.AdditionalData.Substring
                                            (bankDepositHistoryItem.AdditionalData.IndexOf("TraceNo\":\""),
                                            bankDepositHistoryItem.AdditionalData.Length- bankDepositHistoryItem.AdditionalData.IndexOf("TraceNo\":\"")-2)) </td>

, но результат: TraceNo":"479936 Как мне получить это: 479936 Я должен сказать, что яЗнаю, что это возможно с сериализацией и десериализацией, но я хочу знать, возможно ли это с подстрокой или разделением или методами, подобными этим.Большое спасибо

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Если вы все еще хотите проанализировать строку, вы можете использовать несколько удобных методов расширения строки (у меня также есть варианты для целых чисел и регулярных выражений):

public static string Past(this string s, string starter) {
    var starterPos = s.IndexOf(starter);
    return starterPos == -1 ? String.Empty : s.Substring(starterPos + starter.Length);
}
public static string UpTo(this string s, string stopper) {
    var stopPos = s.IndexOf(stopper);
    return (stopPos >= 0) ? s.Substring(0, stopPos) : s;
}

Затем извлечь с помощью:

var ans = bankDepositHistoryItem.Past("\"samanTraceNo\":\"").UpTo("\"");
0 голосов
/ 06 мая 2019

Это строка JSON, поэтому я сначала преобразовал бы строку в объект .NET, используя популярную библиотеку фреймворка Json.NET .

После добавления пакета Newtonsoft.Json NuGet в ваш проект ваш код будет выглядеть примерно так:

@using Newtonsoft.Json.Linq //add this to your Razor page or to _ViewImports.cshtml

<td>@(JObject.Parse(bankDepositHistoryItem)["samanTraceNo"])</td>
...