如何快速获取特定字符前后的特定字符串?

时间:2018-12-26 04:10:41

标签: swift

我有以下字符串:"lat/lng: (-6.2222391,106.7035684)"

我只需要在该string中获得那些双重数据类型。那么如何只获取* -6.222239 * 1和 106.7035684 作为字符串变量?

如何获取该括号中的数字?

所以我认为我在"("之后和","之前得到了字符串,以得到"-6.2222391",也在","之后和")"之前得到了{{1 }}

但是我不知道如何在代码中得到它

4 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

let str = "lat/lng: (-6.2222391,106.7035684)"
let rg = NSRange(location: 0, length: (str as NSString).length)

let latRegex = try! NSRegularExpression(pattern: "(?<=\\()[+-\\.0-9]+(?=,)")
  • (?<=\\()正向查找,它查找(之前的任何内容,
  • [+-\\.0-9]+急切地寻找至少一个或多个字符,这些字符可以是+-.或从0到{{ 1}},
  • 9正向超前,它与后跟(?=,)的所有内容匹配。

现在让我们使用以下正则表达式:

,

以同样的方式,我们可以得到经度:

let latitude: Double?  = latRegex.matches(in: str, range: rg)
    .compactMap { Double(str[Range($0.range, in: str)!]) }
    .first

if let lat = latitude {
    print(lat)  //-6.2222391
}

PS:为了简洁起见,我在这里和那里都使用过强制展开

答案 1 :(得分:1)

let source = "lat/lng: (-6.2222391,106.7035684)"
let splited = source.components(separatedBy: "lat/lng: ")[1] //separating

let removed = splited.replacingOccurrences(of: "(", with: "").replacingOccurrences(of: ")", with: "") // removing

let coord = removed.components(separatedBy: ",") // removing

let lat = Double(coord[0])
let lng = Double(coord[1])

答案 2 :(得分:0)

您已经收到了一些很好的答案。但是我想我想出了一个更紧凑的版本。

您需要关心out2 <- do.call(c, lapply(seqVec, function(i) lapply((i+1):length(colNames), function(j) cbind(ID = data$ID, data[colGroups %in% colNames[c(i, j)]])))) - 0~9.

,仅考虑具有两个组成部分,然后将它们分开使用。

看到这个:

,

答案 3 :(得分:0)

尝试一下:

<div class="image-container">
 <img [src]="url ? url : 'https://www.w3schools.com/howto/img_avatar.png'" class=""> <br/>
 <input type='file' (change)="onSelectFile($event)" class="select-profile-picture">
 <span class="message">Tap here to select your picture</span>
</div>