【问题标题】:How Get everything after index of a specific character to end?如何在特定字符的索引结束后获取所有内容?
【发布时间】:2019-05-06 12:31:37
【问题描述】:

我试图通过子字符串获取字符串的一部分,这是我的字符串:{"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 我不得不说我知道这可以通过序列化和反序列化实现,但我想知道这是否可以通过子字符串或拆分或类似的方法实现。 非常感谢

【问题讨论】:

  • 了解如何使用 JSON 解析器。
  • 对我来说这看起来像 json。尝试通过反序列化来获得您的价值。
  • @TimBiegeleisen 好的,谢谢,我会阅读有关反序列化的信息
  • 从不自行解析 JSON。一旦您的数据结构发生变化,这将变得难以维护。您应该使用反序列化器,例如而是 NewtonSoft。
  • 将json转换为对象,然后就可以使用属性和值了。例如JToken token = JObject.Parse(stringFullOfJson); 。更多细节可以在这里找到:stackoverflow.com/a/4749755/218408

标签: c# asp.net-mvc razor split substring


【解决方案1】:

这是一个 JSON 字符串,所以我会先使用流行的 Json.NET 框架库将该字符串转换为 .NET 对象。

将 Newtonsoft.Json NuGet 包添加到您的项目后,您的代码将如下所示:

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

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

【讨论】:

    【解决方案2】:

    如果您仍想解析字符串,可以使用几个方便的字符串扩展方法(我也有整数和正则表达式的变体):

    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("\"");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多