1

我正在尝试用逗号分隔的值解析一个长字符串,例如“lat,long,distance,,elevation”。字符串实际上很长,我需要获取每个值并将获取的值保存在 dynamodb 的不同列中。我正在使用 dyamodbv2 规则。我发现可能有用的函数是 substring(String, Int [, Int])、length(String)、indexof(String, String) 和 get()。

例如我得到这样的数据:

{
  LOCATION_DATA: "lat,long,distance,,elevation"
}

这是我到目前为止所做的,

//first value - 0 to next comma
substring(LOCATION_DATA, 0, indexof(LOCATION_DATA, ',')) as latitude,
//second value - substring starting from last substring to next comma
substring(substring(LOCATION_DATA, indexof(LOCATION_DATA, ',') +1 ) ,
              0,     
              indexof(substring(LOCATION_DATA, indexof(LOCATION_DATA, ',') +1 ), ',') 
) as longitude,
...

但这变得过于冗长,并且转移到下一个逗号分隔值变得越来越困难。有没有办法将逗号分隔的值转换为数组,然后用 get(0), get(1).. 获取它们?我必须以这种方式获取大约 20 个字段!

此外,这些值的长度可以不同,并且某些字段可以为空,例如示例字符串中“距离、、海拔”之间的值。这些空值可以忽略。

就我现在而言,我无法存储和创建自定义函数,或使用http://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions 中提供的任何其他函数。 .html _

4

1 回答 1

-1

在rails中,您可以根据分隔符将字符串转换为数组示例

LOCATION_DATA = "lat,long,distance,,elevation"
myarray = LOCATION_DATA.split(',')

然后你可以使用

myarray[0]="lat"
myarray[1]="long"
myarray[2]="distance"
myarray[3]=""
myarray[4]="elevation"

您还可以将这些字符串转换为整数或浮点数:

myarray[0].to_i
myarray[2].to_f

希望这可以帮助

于 2017-04-11T05:53:17.240 回答