我遇到的问题是这个。我提取的数据以非常不便的方式添加了信息。当我试图隔离并提取字符串中的某些文本时,它变得非常复杂。我希望能够提取产品数量以仅显示数字值,而不显示字母文本或字符。
字符串是:
[{“ orderItemId”:609507407,“ lineItemKey”:“ 1509870501993”,“ sku”:“ SKU-111111”,“名称”:“公司 产品-不适用/以1-2个业务发货 days“,” imageUrl“:” https://FAKEADDRESS.com/“,” weight“:{” value“:352.0,” units“:” ounces“,” WeightUnits“:1},” quantity“:1,” unitPrice“ :1599.0,“ taxAmount”:null,“ shippingAmount”:null,“ warehouseLocation”:null,“ options”:[],“ productId”:30236912,“ fulfillmentSku”:null,“ adjustment”:false,“ upc”: “”,“ createDate”:“ 2018-11-03T20:20:42.247”,“ modifyDate”:“ 2018-11-03T20:20:42.247”}]
使用(LEFT(RIGHT(N2:N,LEN(N2:N)-FIND(“ quantity”,N2:N,1)-9),3))我能够找到正确的位置数量,但是,如果数值(数量)是2或3位数字,它将保留后面的任何文本/数字。
即“ quantity”:123将显示123,但“ quantity”:1,“将显示1”“
(LEFT(RIGHT(N2:N,LEN(N2:N)-FIND(“ quantity”,N2:N,1)-9),3))
本质上,我只希望公式在单元格中显示一个数字值(数量)。没有其他的。
答案 0 :(得分:0)
在我看来,这就像JSON,甚至对于单个数量的整数,即使正则表达式也可能会显得过分。
Dim str As String, el As String, q As Long
str = "[{""orderItemId"":609507407, ... ,""quantity"":1,""unitPrice"":1599.0, ... ,""modifyDate"":""2018-11-03T20:20:42.247""}]"
el = """quantity"":"
q = val(Mid(str, InStr(1, str, el) + Len(el)))
Debug.Print q