Обрезать последний символ в конце строки - PullRequest
2 голосов
/ 18 июня 2020

У меня есть al oop, который создает строку до конца файла. В зависимости от того, сколько продуктов у меня есть на данный момент. Мне нужно обрезать последнюю запятую в конце.

Я получаю:

{ 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 }

L oop:

<%
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 ]

6 голосов
/ 19 июня 2020

За многие годы нашли самый простой способ - позволить l oop генерировать дополнительный символ, а не просто обрезать его после выполнения l oop с помощью Left().

После вашего l oop add;

items = Left(items, Len(items) - 1)

Этот способ позволяет избежать необходимости добавлять лог c в l oop для без надобности обработки крайних случаев.

4 голосов
/ 19 июня 2020

Переместите запятую в начало l oop и поместите ее в условный оператор, чтобы он не выполнялся на первой итерации

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 
1 голос
/ 20 июня 2020

В подобных случаях я часто использую метод 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, вы можете сделать то же самое с простым массивом, но вам придется переименовывать его на каждой итерации.

...