如何获取特定字符索引后的所有内容以结束?

时间:2019-05-06 12:31:38

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

我正在尝试通过子字符串来获取字符串的一部分,这就是我的字符串:{"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 :(得分:0)

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

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

override fun dismiss() {
    Utils.hideKeyboard(mContext, window)
    super.dismiss()
}

答案 1 :(得分:0)

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

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