使用子字符串修剪长文本以获得我想要的内容

Trimming a long text to get what I want using substring

我有一个程序是在 UWP 中使用 c# 创建的,我们使用 ESRI.ArcGISRuntime 库在其中嵌入了一个地图。

我只想显示数据,我已经使用子字符串来提取我需要的东西,但它总是给我很多。

这是我得到的代码行:

PROJCS[“WGS_84_Web_Mercator_auxillary_Sphere”.DATUM[“GCS WGS 1984”.SPHEROID[“WGS 1984”.6378…………..

我只想显示 DATUM 之后和 SPHEROID 之前的内容,即 GCS WGS 1984。

这是我目前拥有的:

_currentProjection = _tileLayer.SpatialReference.WkText.Substring(_tileLayer.SpatialReference.WkText.LastIndexOf("DATUM") + 9, _tileLayer.SpatialReference.WkText.StartsWith.ToString("SPHEROID");

子字符串的第一部分是正确的,但我无法正确地得到第二部分。有没有人知道如何做到这一点?

谢谢

有很多方法,但 Regex 可能是我的首选

var code = @"PROJCS[""WGS_84_Web_Mercator_auxillary_Sphere"".DATUM[""GCS WGS 1984"".SPHEROID[""WGS 1984"".637";

var m = Regex.Match(code, @"DATUM\[""(?<d>[A-Z0-9 ]+)""\.SPHEROID"); 
var r = m.Groups["d"].Value;

如果你想把它作为子字符串:

var code = @"PROJCS[""WGS_84_Web_Mercator_auxillary_Sphere"".DATUM[""GCS WGS 1984"".SPHEROID[""WGS 1984"".637";

var f = code.IndexOf("DATUM") + 7;
var t = code.IndexOf("SPHEROID") - 2;
var r = code[f..t]; //this is C#9 indexes and ranges; if you don't have it you can upgrade C# or use .Substring(f, t-f)

或拆分:

var code = @"PROJCS[""WGS_84_Web_Mercator_auxillary_Sphere"".DATUM[""GCS WGS 1984"".SPHEROID[""WGS 1984"".637";

var bits = code.Split('"');
var i = Array.FindIndex(bits, b => b.Contains("DATUM"));
var r = bits[i+1];