我有一个循环,该循环正在创建字符串,直到文件末尾。取决于我当时有多少种产品。我需要在末尾剪掉最后一个逗号。
我得到:
{ 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 }
循环:
<%
set rsheadercart = db.execute(sqlheadercart)
if not rsheadercart.eof then
do until rsheadercart.eof
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
%>
<%
end if
%>
答案 0 :(得分:6)
多年来发现,最简单的方法是让循环生成多余的字符,而不是仅在使用Left()
执行循环之后才修剪它。
添加循环后;
items = Left(items, Len(items) - 1)
这种方式避免了在循环中添加不必要的逻辑负载来不必要地处理边缘情况。
答案 1 :(得分:4)
将逗号移动到循环的开头,并将其放在条件语句中,这样它就不会在第一次迭代时执行
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
答案 2 :(得分:1)
在这种情况下,我经常使用Join方法
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,",")
如果您不想使用Arraylist,则可以对普通数组进行相同的操作,但是每次迭代都必须对其进行重新着色。