У меня длинная строка и внутри. В этой строке есть следующий текст:
"formatter": "SomeInformationHere"
Мне нужно найти приведенный выше текст в длинной строке и удалить двойные кавычки вокруг SomeInformationHere, чтобы результат выглядел так, как показано ниже, но кавычки вокруг слова "форматирование" должны оставаться.
"formatter": SomeInformationHere
Я попробовал следующее, которое находит строку, но я не уверен, как заменить только кавычки вокруг значения SomeInformationHere:
string pattern = "\"formatter\": ([\"]).*([\"])";
Match match = Regex.Match(myString, pattern, RegexOptions.IgnoreCase);
//Replace text in "myString" here
myString = ?????
//Output match value:
Response.Write(match.Value);
Изменить: О, я забыл упомянуть, что вышеупомянутая картина может быть в "мистике" более одного раза, и всем потребуется замена, выполняющая на них.
Изменить 2:
Я просмотрел сайт тестера регулярных выражений (спасибо за ссылку) и вставил в свою тестовую строку и шаблон регулярных выражений, похоже, работает в этом, но когда я помещаю тот же шаблон в точную сеть, для работы, как если бы была выбрана опция "singleline". Ниже приведен код, который я использовал.
-
Строка - Обратите внимание, что это НЕ содержит каретки - это одна длинная строка, которая была построена из XML файла. Отформатирован для удобства чтения.
{ "chart": { "borderRadius": 15, "borderWidth": 1, "renderTo": "ChartContainer1", "type": "pie" }, "credits": { "enabled": false }, "labels": { "items": [{ "html": "Label 1", "style": { "left": "10px", "top": "30px" } }, { "html": "Label 2", "style": { "left": "10px", "top": "50px" } }, { "dummy": null }] }, "plotOptions": { "pie": { "allowPointSelect": true, "cursor": "pointer", "showInLegend": true } }, "series": [{ "data": [{ "name": "Firefox", "y": 45.0 }, { "name": "IE", "y": 26.8 }, { "name": "Chrome", "selected": true, "sliced": true, "y": 12.8 }, { "name": "Safari", "y": 8.5 }, { "name": "Opera", "y": 6.2 }, { "name": "Others", "y": 0.7 }], "name": "Browser share" }, { "dummy": null }], "test": { "formatter": "function(){return \u0027\u0027+ this.point.name +\u0027<\/b>: \u0027+ this.y +\u0027 %\u0027;}" }, "title": { "align": "center", "text": "Your chart title here" }, "tooltip": { "formatter": "function(){return \u0027\u0027+ this.point.name +\u0027<\/b>: \u0027+ this.y +\u0027 %\u0027;}" } }
Как вы можете видеть возле дна рядом с "test" и "tooltip", у меня есть часть "formatter:". patten, который я использую в настоящее время, когда вышеприведенная строка находится на нескольких строках (с CR) в тестере, но когда я помещаю ее в одну строку, как это должно быть, тогда шаблон не работает
Код/шаблон .NET, который я использую:
string pattern = "(\"formatter\": )\"(.*)\"( })";
var regex = new Regex(pattern, RegexOptions.IgnoreCase);
aJSON = regex.Replace(aJSON, "$1$2$3");
Еще раз спасибо. но я все еще не могу заставить шаблон правильно работать в тесте.
Целевая строка на сайте тестера REGex: (без CR)
{"chart": {"borderRadius": 15, "borderWidth": 1, "renderTo": "ChartContainer1", "type": "pie" }, "credits": {"enabled": false }, "labels": { "items": [ {"html": "Label 1", "style": {"left": "10px", "top": "30px" } }, {"html": "Label 2", "style": {"left": "10px", "top": "50px" } }, {"dummy": null } ] }, "plotOptions": {"pie": {"allowPointSelect": true, "cursor": "pointer", "showInLegend": true } }, "series": [ { "data": [ {"name": "Firefox", "y": 45.0 }, {"name": "IE", "y": 26.8 }, {"name": "Chrome", "selected": true, "sliced": true, "y": 12.8 }, {"name": "Safari", "y": 8.5 }, {"name": "Opera", "y": 6.2 }, {"name": "Others", "y": 0.7 } ], "name": "Browser share" }, {"dummy": null } ], "test": {"formatter": "function(){return \u0027\u0027+ this.point.name +\u0027<\/b>: \u0027+ this.y +\u0027 %\u0027;}" }, "title": {"align": "center", "text": "Your chart title here" }, "tooltip": {"formatter": "function(){return \u0027\u0027+ this.point.name +\u0027<\/b>: \u0027+ this.y +\u0027 %\u0027;}" } }
Теперь я нашел правильный шаблон, который, кажется, работает и находит несколько совпадений в строке. Отправьте его здесь для завершения.
string pattern = "(\" formatter\ ":) \" (. [^\ "] *) \" ";