子字符串继续搜索直到指定字符
本文关键字:字符 字符串 继续 搜索 | 更新日期: 2023-09-27 18:05:29
我在运行时得到一个字符串。字符串为JSON格式(键值对)。其中一个关键是"userId
"。我需要检索userId
的值。问题是我不知道"userId
"键的位置。字符串可以是{"name":"XX", "userId":"YYY","age":"10"}
或者{"age":"10", "name":"XX", "userId":"YYY"}
或者{"age":"10"}
我正在考虑使用substring()
var index = myString.IndexOf("userId'":'"");
if(index != -1){
myString.Subtring(index, ???)//How to specify the length here
}
我不确定,怎么说继续,直到你找到下一个"
(双引号)
如果只计划使用userId
属性,您可以简单地声明一个具有userId
成员的对象并反序列化json。任何其他属性将在反序列化过程中被省略。
class UserIDObj
{
public string UserId { get; set; }
}
var obj = JsonConvert.DeserializeObject<UserIDObj>("{'"name'":'"XX'", '"userId'":'"YYY'",'"age'":'"10'"}");
string usrID = obj.UserId;
@Wiktor Stribiżew给出的答案也很有魅力。我在粘贴它的溶液。
System.Text.RegularExpressions.Regex.Match(myString, "'"userId'":'"([^'"]+)").Groups[1].Value
你可以这样做:
var needle = "'"userId'":"; // also you forgot to escape the quote here
var index = myString.IndexOf(needle);
if(index != -1){
var afterTheUserId = myString.Substring(index + needle.Length);
var quoteIndex = afterTheUserId.IndexOf('"');
// do what you want with quoteIndex
}
但正如Eric Philips和PhonicUK所说,您应该使用适当的JSON解析器,而不是编写自己的字符串函数。