使用正则表达式从 Swift 字符串中删除 Optional()

Remove Optional() from Swift string using Regular Expressions

我有一个包含 'Optional(someVal)' 的字符串。我想要一个正则表达式来查找和替换所有出现的 this 关键字,并只替换其中的内部值。我正在做的是...

query = "Insert Into table (Col, Col, Col, Col, Col, Col4, Col4, Col4, Col, AuditStatusId, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col, Col ) Values ('71E3F86A059A40F0B3F7614E08ACD2B9', 1, Optional(4), Optional(6), ' ', '', Optional(40799), 'NULL', NULL, 1, 1, NULL, NULL, NUll, 0, NULL, 1, '', NULL , NULL, 90.0, 100.0, 70.0, 89.99, 0.0, 69.99, 1, 1, '2015-01-15 14:09:34 +0000', 0 )"

并使用正则表达式替换,

 query = query.stringByReplacingOccurrencesOfString("(\Optional(w+))", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: Range<String.Index> (start: query.startIndex, end: query.endIndex)) 

但这甚至在 Objective C 中也不起作用。有人知道怎么做吗??

编辑: 我试图通过展开价值来克服这个问题,但它没有提出我正在寻找的解决方案。我需要的是将值保持为 'nil' 以防万一没有值并在 'Optional(val)' 内使用值以防输入值。所以请避免建议 Unwrapping for values。

我知道我不是在回答你原来的问题,但你的方法助长了不良做法。最好在将值插入查询之前解包它们。例如,

var optional1: Int? = 10
var optional2: Int?

optional1?.description ?? "NULL" // "10"
optional2?.description ?? "NULL" // "NULL"

我找到了自我的答案。由于您的所有评论和答案仅显示展开值,但如果我有 30 列,那么我将不得不放置 30 个支票或 30 个具有 optional1?.description 的语句? "NULL"。虽然我可以将 nil 替换为 NULL 并将 Optional(value) 替换为 value,并使用单个正则表达式语句作为:

在Swift中:

query = query.stringByReplacingOccurrencesOfString("\Optional[(](\w+)[)]", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: Range<String.Index> (start: query.startIndex, end: query.endIndex))

并在 objective C 中:

query = [query stringByReplacingOccurrencesOfString:@"\Optional[(](\w+)[)]"
                                         withString:@"222"
                                            options:NSRegularExpressionSearch
                                              range:NSMakeRange(0, [query length])];