renderItem = ({ item }) => {
return (
<TouchableWithoutFeedback onPress={() => this.onPressItem(item)}>
<ListItem>
<Text>{item.PRA_Departement==null ? "Code Postal: " + item.PRA_CP:item.PRA_Departement}</Text>
</ListItem>
</TouchableWithoutFeedback>
)
}
onPressItem(item) {
() => this.props.navigation.push('DisplayPraticien',{departement: item.PRA_Departement})
}
上面的示例不会绘制多边形,因为开始和结束坐标并不总是匹配。如何以编程方式解决此问题。
并不是所有的多边形都是这个长度。多边形可以具有更多或更少的坐标。
我想获得起始组($ 1)并将其添加到结束(如果不匹配)。 我的正则表达式示例在这里,但我不知道如何获得第二组。 (即最后一个坐标)
https://regex101.com/r/mFWVle/1
以下是预期的最终结果,正则表达式并替换为;)
[[106.00,-50.00],[109.00,-34.00],[101.00,-29.00],[105.00,-26.00],
[116.00,-30.00],[114.00,-50.00] ]
答案 0 :(得分:1)
这是有效多边形的正则表达式,即,其起始和结束坐标相同的正则表达式:
^\[(\[-?\d+(?:\.\d+)?,-?\d+(?:\.\d+)?\])(?:,\[-?\d+(?:\.\d+)?,-?\d+(?:\.\d+)?\])+,$1\]$
此模式仅匹配并捕获第一个坐标,然后断言该相同的坐标作为多边形定义中的最终坐标出现。
我在这里假设多边形定义中没有空格。如果可能存在任意空格,我们可以更新正则表达式以解决该问题,但老实说,只剥离所有空格然后按原样使用上述模式可能更干净。
编辑:
如果相反,您想匹配一个多边形并替换为将添加到末尾,并且在坐标之间也可能存在空格,请在此模式上查找:
^\[(\[-?\d+(?:\.\d+)?,-?\d+(?:\.\d+)?\])((?:\s*,\s*\[-?\d+(?:\.\d+)?,-?\d+(?:\.\d+)?\])+)\]$
并替换为:
$1$2,$1