从字符串中删除子字符串的最佳方法

本文关键字:字符串 最佳 方法 删除 | 更新日期: 2023-09-27 18:32:05

我有几个这样的字符串:

 string x = "[{'"Name'":'"property1'",'"Value'":true},{'"Name'":'"FOO'",'"Value'":12345ddddeeee},{'"Name'":'"property3'",'"Value'":false}]";

并且需要删除

"{'"Name'":'"FOO'",'"Value'":12345ddddeeee}"

从原始字符串。但是,该 FOO 名称 + 值可以位于字符串中的任何位置。它不一定必须在属性 1 和属性 3 之间。从与 x 相同格式的通用字符串中删除它的最佳方法是什么?

FOO 的值可能会有所不同

从字符串中删除子字符串的最佳方法

请验证并修复您的 json。你可以使用类似jsonlint的东西

如果您可以自己解析字符串并搜索名称FOO,这可能是最好的方法。但是,您必须处理所有与解析相关的任务,例如json字符串中不必要的空格。

如果这个string x不是太大(我把它留给你做分析以确定什么对你的程序来说太大了),那么我建议将string反序列化为List,删除不必要的数据并序列化回来可能很容易。请参阅下面给出的示例代码。您需要调用ParseString()方法来完成任务。请注意,您必须根据需要更新此信息。

public class ParseMyDateItemList
{
    public static void ParseString()
    {
        string x = "[{'"Name'":'"property1'",'"Value'":true},{'"Name'":'"FOO'",'"Value'":'"12345ddddeeee'"},{'"Name'":'"property3'",'"Value'":false}]";
        var dataItems = Newtonsoft.Json.JsonConvert.DeserializeObject<IList<MyDataItem>>(x);
        var resultDataItems = dataItems.Except(dataItems.Where(t => t.Name.ToLower() == "foo")).ToList();
        var resultJson = Newtonsoft.Json.JsonConvert.SerializeObject(resultDataItems);
    }
}
public class MyDataItem
{
    public string Name { get; set; }
    public object Value { get; set; }
}

我想出了一个办法:

string tobesearched = "{'"Name'":'"FOO'",'"Value'":";
string k = x.Substring(x.IndexOf(tobesearched));
string final = x.Replace(x.Substring(x.IndexOf(tobesearched), x.IndexOf(tobesearched) + k.IndexOf("}") - x.IndexOf(tobesearched)),"")