提前致谢.我感谢任何帮助.
我想比较两个相同类型和结构的任意JTokens(来自NewtonSoft的Json.Net).
static int CompareTokens(JToken x, JToken y);
// possible output: 0 / 1 / -1
Run Code Online (Sandbox Code Playgroud)
主要目标是能够使用此方法对两个Json字符串进行排序,这样即使在开始时它们具有相同的数据,但是以不同的顺序,最后这两个字符串完全相同.所以排序标准并不重要,重要的是这个标准总是一样的.并且应该考虑每个小数据元素.
JToken可以是以下几种类型之一:Array, Boolean, Date, Float, Guid, Integer, Null, Object, Property, String, TimeSpan, Uri.我不考虑比较Bytes, Comment, Constructor, None, Undefined, Raw.
这是一个很常见的问题.如果我弄明白该怎么做,我会给它加一个+100.抱歉我的英语.
我正在尝试拆分表示XPath的字符串,例如:
string myPath = "/myns:Node1/myns:Node2[./myns:Node3=123456]/myns:Node4";
Run Code Online (Sandbox Code Playgroud)
我需要拆分'/'('/'从结果中排除,就像正常的字符串拆分一样),除非'/'碰巧在'[...]'之内(其中'/'都不是分开,也包括在结果中).
那么正常的事情string[] result = myPath.Split("/".ToCharArray())让我:
result[0]: //Empty string, this is ok
result[1]: myns:Node1
result[2]: myns:Node2[.
result[3]: myns:Node3=123456]
result[4]: myns:Node4
Run Code Online (Sandbox Code Playgroud)
results[2]并result[3]应主要结合起来,我应该结束了:
result[0]: //Empty string, this is ok
result[1]: myns:Node1
result[2]: myns:Node2[./myns:Node3=123456]
result[3]: myns:Node4
Run Code Online (Sandbox Code Playgroud)
由于我不是非常流利的正则表达式,我已经尝试在拆分后手动将结果重新组合成一个新的数组,但我担心的是,尽管让它在这个例子中起作用是微不足道的,但正则表达式似乎是更好的选择.我得到更复杂的xpaths的情况.
为了记录,我查看了以下问题:正则
表达式拆分字符串保留引号
C#Regex Split - 引号外的引号
拆分具有空格的字符串,除非它们包含在"引号"中?
虽然他们应该足以帮助解决我的问题,但我遇到了一些问题/困惑的方面,阻止他们帮助我.
在前2个链接中,作为正则表达式的新手,我发现它们难以解释和学习.他们正在寻找引用,左右对之间看起来相同,所以把它翻译成[和]让我感到困惑,试错不教我任何东西,而是让我更加沮丧.我可以理解相当基本的正则表达式,但这些答案的作用比我目前理解的要多一点,即使在第一个链接中有解释.
在第三个链接中,我将无法访问LINQ,因为代码将在旧版本的.NET中使用.