微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从arrayString中提取特定的随机字符串?

如何解决如何从arrayString中提取特定的随机字符串?

我遇到的情况是,我收到的输入字符串中包含一个随机值("54403dd5-5f1d-4ba0-8477-9b16807ee285"),基本上该字符串是从另一个代码接收的,但是我只是粘贴在那里以供参考,还请注意,我在为了获得更清晰的字符串输出(可以省略)。我真正需要的是如何仅从那里选择ID值,以便进行进一步处理。我还粘贴了到目前为止所做的工作生成输出,但没有运气,如果您有更好的方法获取该值而没有其他任何收获,我将不胜感激。

String input = "\"{\"Protocol\":\"12345\",\"Version\":1,\"Timestamp\":\"2020-05-01T21:55:12.123456Z\",\"Assignment\":{\"Id\":\"54403dd5-5f1d-4ba0-8477-9b16807ee285\",\"Asset\":[]}}\"";
String pattern = @"\s-\s?[+*]?\s?-\s";
int found = 0;

String[] elements = System.Text.RegularExpressions.Regex.Split(input,pattern);
foreach (var element in elements)
    Console.WriteLine(element);

Console.WriteLine("\nWe want to retrieve only the Id string value. That is:");
foreach (string s in elements)
{
    found = s.IndexOf("Id");
    Console.WriteLine(s.Substring(found + 5));
}

输出

"{"Protocol":"12345","Version":1,"Timestamp":"2020-05-01T21:55:12.123456Z","Assignment":{"Id":"54403dd5-5f1d-4ba0-8477-9b16807ee285","Asset":[]}}"

我们只想检索ID字符串值。那是: 54403dd5-5f1d-4ba0-8477-9b16807ee285","Asset":[]}}"

解决方法

如果您不介意使用Newtonsoft.Json软件包,则可以尝试以下方法:

string input = "{\"Protocol\":\"12345\",\"Version\":1,\"Timestamp\":\"2020-05-01T21:55:12.123456Z\",\"Assignment\":{\"Id\":\"54403dd5-5f1d-4ba0-8477-9b16807ee285\",\"Asset\":[]}}";
var obj = JObject.Parse(input);
Guid id = obj.SelectToken("Assignment").SelectToken("Id").ToObject<Guid>();

更新

如果您不想使用Newtonsoft软件包,则可以使用System.Text这样操作:

string input = "{\"Protocol\":\"12345\",\"Asset\":[]}}";
using(var doc = JsonDocument.Parse(input))
{
    Guid id = doc.RootElement.GetProperty("Assignment").GetProperty("Id").GetGuid();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。