удалить последние две строки символа! - PullRequest
3 голосов
/ 24 августа 2009

следующий код:

If checkboxList.Items(i).Selected Then 
   .Fields("DESC1").Value += checkboxList.Items(i).Text + ", "
End If

должен выдавать вывод, такой как «A, B, C, (пробел)», который затем будет связан с динамически созданным GridView Я хотел бы удалить последнюю строку из двух символов, то есть ", (пробел)". Как я могу это сделать?

Ответы [ 10 ]

7 голосов
/ 24 августа 2009

Взгляните на String.Join , который может делать то, что вы хотите, без необходимости манипулировать двумя последними символами.

4 голосов
/ 24 августа 2009

Я бы не стал добавлять их в первую очередь :) попробуйте

If checkboxList.Items(i).Selected Then    
    if .Fields("DESC1").Value Is System.DbNull.Value then
        .Fields("DESC1").Value = checkboxList.Items(i).Text
    else
        .Fields("DESC1").Value +=  ", " + checkboxList.Items(i).Text
    End If
End If
3 голосов
/ 24 августа 2009

Для информации конкатенация строк стоит дорого. Выглядит (из i и из результатов), что вы действительно должны использовать StringBuilder; некоторый грубый псевдокод (в C #, но тривиально перевести на VB.Net):

StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < checkboxList.Items.Count ; i++) {
    if(checkboxList.Items[i].Selected) {
        if(sb.Length > 0) sb.Append(", "); // add separator
        sb.Append(checkboxList.Items[i].Text); // add text
    }
}
someOjb.Fields("DESC1") = sb.ToString(); // use result
1 голос
/ 24 августа 2009

Вы можете использовать .TrimEnd ("," .ToCharArray ()) для строки, или вы можете использовать SubString:

strLetters.Substring(0, strLetters.Length - 2)
1 голос
/ 24 августа 2009

Кажется, вы просто хотите получить "A, B, C" от "A, B, C,". Немного простых манипуляций со строками должно сделать эту работу:

Dim input = "A, B, C, "
Dim result = input.Substring(0, input.LastIndexOf(","))

Это более универсально, чем простое удаление двух последних символов, поскольку оно ищет последнюю запятую, что, как я полагаю, вы ищете.

Конечно, тот факт, что вы добавляете эти два символа в первую очередь, звучит немного странно. Однако мне нужно увидеть больше контекста, чтобы показать, как этого можно избежать.

0 голосов
/ 24 августа 2009
var selectedValues = checkboxList.Items
    .Where(i => i.Selected)
    .Select(i => i.Fields("DESC1").Value);

var result = String.Join(", ", selectedValues); 
0 голосов
/ 24 августа 2009

Это удалит весь трейлинг и / или [пробел]: * ​​1001 *

.Fields("DESC1").Value = .Fields("DESC1").Value.TrimRight(", ".ToCharArrray()) 
0 голосов
/ 24 августа 2009

Есть ли в VB троичный оператор if?

If checkboxList.Items(i).Selected Then 
    .Fields("DESC1").Value += checkboxList.Items(i).Text + (i == checkboxList.Items.Length-1 ? "" : ", ")
End If
0 голосов
/ 24 августа 2009

Есть также просто «Удалить»:

string k = "okay";
string s = k.Remove(k.Length - 2, 2);
0 голосов
/ 24 августа 2009

использование

.Fields("DESC1").Value += checkboxList.Items(i).Text + ", "

. Fields("DESC1").Value = .Fields("DESC1").Value.TrimRight(new []{',',' '});

PS: - извините, если неверный синтаксис vb:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...