修剪字符串末尾的最后一个字符

时间:2020-06-18 20:22:17

标签: 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_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 
%>

3 个答案:

答案 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,则可以对普通数组进行相同的操作,但是每次迭代都必须对其进行重新着色。

相关问题