考虑括号的分割字符串-R

问题描述

在考虑开括号和闭括号的同时,我想在R中编辑字符串。

字符向量是rgdalsp中使用的坐标系的WKT参考,所有这些都使用PROJ库。

原始字符串由带有[]的嵌套参数构成。该方案可以总结如下:

WKT = COMPD_CS [PROJCS [....],VERT_CS [...]]

WKT = "COMPD_CS[\"NAD83(2011) / California zone 2 (ftUS) + NAVD88 height - Geoid12B (ftUS)\",PROJCS[\"NAD83(2011) / California zone 2 (ftUS)\",GEOGCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"epsg\",\"7019\"]],\"1116\"]],PRIMEM[\"Greenwich\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,\"9122\"]],\"6318\"]],PROJECTION[\"LAmbert_Conformal_Conic_2SP\"],ParaMETER[\"standard_parallel_1\",39.83333333333334],ParaMETER[\"standard_parallel_2\",38.33333333333334],ParaMETER[\"latitude_of_origin\",37.66666666666666],ParaMETER[\"central_meridian\",-122],ParaMETER[\"false_easting\",6561666.667],ParaMETER[\"false_northing\",1640416.667],UNIT[\"US survey foot\",0.3048006096012192,\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",norTH],\"6418\"]],VERT_CS[\"NAVD88 height - Geoid12B (ftUS)\",VERT_DATUM[\"north American Vertical Datum 1988\",2005,\"5103\"]],\"6360\"]]]"

我想通过编程获得的是相同的字符串,但在`VERT_CS之后的[ ]之间没有字符。与初始方案相比,该方案是相同的,除了已删除了VERT_CS [...]部分:

WKT = COMPD_CS [PROJCS [....]]

   WKT2 = "COMPD_CS[\"NAD83(2011) / California zone 2 (ftUS) + NAVD88 height - Geoid12B (ftUS)\",\"6418\"]]]"

我该如何使用R进行编程?

解决方法

您可以使用gsub来执行此操作,并指定一个匹配“ VERT_CS”的正则表达式,后跟包含任何字符的方括号。您可以选择将其替换为空的VERT_CS[],也可以将其完全删除。

要清空支架内容,您可以执行以下操作:

gsub("VERT_CS\\[.*?\\]+,","VERT_CS[],WKT)

要完全删除条目,您可以执行以下操作:

gsub("VERT_CS\\[.*?\\]+,"",WKT)

使用第二个版本,我们可以看到它完全删除了VERT_CS[...]

cat(WKT)
COMPD_CS["NAD83(2011) / California zone 2 (ftUS) + NAVD88 height - Geoid12B (ftUS)",PROJCS["NAD83(2011) / California zone 2 (ftUS)",GEOGCS["NAD83(2011)",DATUM["NAD83_National_Spatial_Reference_System_2011",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],"1116"]],PRIMEM["Greenwich","8901"]],UNIT["degree",0.0174532925199433,"9122"]],"6318"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["standard_parallel_1",39.83333333333334],PARAMETER["standard_parallel_2",38.33333333333334],PARAMETER["latitude_of_origin",37.66666666666666],PARAMETER["central_meridian",-122],PARAMETER["false_easting",6561666.667],PARAMETER["false_northing",1640416.667],UNIT["US survey foot",0.3048006096012192,"9003"]],AXIS["X",EAST],AXIS["Y",NORTH],"6418"]],VERT_CS["NAVD88 height - Geoid12B (ftUS)",VERT_DATUM["North American Vertical Datum 1988",2005,"5103"]],"6360"]]]

COMPD_CS["NAD83(2011) / California zone 2 (ftUS) + NAVD88 height - Geoid12B (ftUS)","6360"]]]