从字符串构造位置

时间:2018-12-12 11:22:17

标签: rascal

我将以下字符串发送到我的Web服务器:"|project://Detector/src/exporter.rsc|(1762,28,<45,10>,<45,38>)" 使用toLocation()函数将其转换为位置将导致MalFormedURI错误。

我可以使用toLocation()函数将字符串loc myLoc = toLocation("project://Detector/src/exporter.rsc");转换为位置。 使用正则表达式,我可以提取"0,10,<2,0>,<4,10>"。 但是现在的问题是我可以做:myLoc(0,10,<2,0>,<4,10>),但是我不能做myLoc("0,10,<2,0>,<4,10>")。我可以使用正则表达式提取所有这些位置数据,然后将其添加到该位置,但这将导致讨厌的代码。

转换带有位置数据的字符串的最佳实践是什么,例如"|project://Detector/src/exporter.rsc|(1762,28,<45,10>,<45,38>)"到包含位置数据的位置。

1 个答案:

答案 0 :(得分:2)

我认为最可靠的方法是:

import ValueIO;
str theString = "|project://Detector/src/exporter.rsc|(1762,28,\<45,10\>,\<45,38\>)";
theLoc = readTextValueString(#loc, theString);

该函数可能会抛出解析错误,您可以捕获并处理该错误,但是我猜这不会在您的设置中发生。