Json 修剪字符串末尾的最后一个字符
我有一个循环在创建字符串,直到文件结束。取决于我当时有多少产品。我需要删掉结尾的最后一个逗号 我得到:Json 修剪字符串末尾的最后一个字符,json,loops,vbscript,asp-classic,Json,Loops,Vbscript,Asp Classic,我有一个循环在创建字符串,直到文件结束。取决于我当时有多少产品。我需要删掉结尾的最后一个逗号 我得到: { sku: '6200', display_name:'Product 1', unit_price: 497.37, qty: 1 }, { sku: '2344', display_name:'Product 2', unit_price: 824.21, qty: 1 }, 我需要: { sku: '6200', display_name:'Product 1', unit_p
{ sku: '6200', display_name:'Product 1', unit_price: 497.37, qty: 1 },
{ sku: '2344', display_name:'Product 2', unit_price: 824.21, qty: 1 },
我需要:
{ sku: '6200', display_name:'Product 1', unit_price: 497.37, qty: 1 },
{ sku: '2344', display_name:'Product 2', unit_price: 824.21, qty: 1 }
循环:
将逗号移动到循环的开头,并将其放在条件语句中,这样它就不会在第一次迭代时执行
do until rsheadercart.eof
If items <> "" then
items = items & ","
End If
items = items & " { sku: '" & rsheadercart("ten_digit_part_number") & "',"
items = items & " display_name:'" & rsheadercart("part_name") & "',"
items = items & " unit_price: " & rsheadercart("price") & ","
items = items & " qty: " & rsheadercart("quantity") & " } "
rsheadercart.movenext
loop
do直到rsheadercart.eof
如果项目为“”,则
项目=项目&“
如果结束
items=items&“{sku:”&rsheadercart(“十位数零件号”)&“,”
项目=项目和“显示名称:”&rsheadercart(“部分名称”)&“
项目=项目和“单价:&rsheadercart(“价格”)&”
项目=项目和数量:&rsheadercart(“数量”)和“}”
rsheadercart.movenext
环
多年来,我们发现最简单的方法是让循环生成额外的字符,而不是在循环执行后使用Left()
对其进行修剪
在循环之后添加
items = Left(items, Len(items) - 1)
这种方法避免了在循环中添加大量逻辑来处理不必要的边缘情况。在这种情况下,我经常使用这种方法
如果不想使用Arraylist,也可以使用普通数组,但每次迭代都必须对其进行重新分配。这不是VBA。可以计算循环次数并将其存储在变量中,循环结束后,当最后一个字符大于1时将其删除。这看起来像经典的ASP。它不可能同时是经典的ASP和ASP.NET,它们在结尾处去掉了逗号,但现在一开始就有了逗号,可以尝试不同的条件,例如
如果items“”,那么。如果项目在循环开始时已经有一个值,那么使用该值而不是空引号。`我已经编辑了答案,以便它显示正确的条件语句。不需要所有这些混乱,只需在循环完成后处理最后一个逗号-items=Left(items,Len(items)-1)
。您还可以在rsheadercart.movenext
之后添加if语句,并检查if不是rsheadercart.eof
是否在每个循环的末尾而不是开始处添加逗号更为自然。虽然LakykyMART的解决方案可能对这种情况有点干净,但是在循环中有逻辑的其他用例是一个很好的考虑因素。既然VBScript提升变量,则需要在每次迭代中清除<代码>项目< /代码>的内容。这条线在运行时只运行一次。@Kul Tigin发现得很好。修好了,是的!这比在循环的每次迭代中都使用If
子句要干净得多。更高效,更容易阅读。
items = Left(items, Len(items) - 1)
dim itemList
set itemList = CreateObject("System.Collections.ArrayList")
do until rsheadercart.eof
dim item
item = " { sku: '" & rsheadercart("ten_digit_part_number") & "',"
item = item & " display_name:'" & rsheadercart("part_name") & "',"
item = item & " unit_price: " & rsheadercart("price") & ","
item = item & " qty: " & rsheadercart("quantity") & " } "
itemList.Add item
rsheadercart.movenext
loop
items = Join(itemList.ToArray,",")