c# Обрезать запятые до появления текста - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь удалить любые запятые из моих строк, но не все. Я искал это по всему форуму, но я не могу найти решение для этого. Позвольте мне объяснить это на примере:

Итак, в принципе, у меня есть файл со многими строками. Они выглядят так:

,,,,,9,33380,32785,14,,,,,50,,,,,,3,,,,600
,,,,19,33399,32774,14,,,,,50,,,,,,2,,,,600
,,,,19,33399,32784,14,,,,,50,,,,,,3,,,,600
,,,,38,33380,32789,14,,,,,50,,,,,,1,,,,600
,,,,38,33404,32793,14,,,,,50,,,,,,1,,,,600
,,,,79,33394,32795,14,,,,,50,,,,,,2,,,,600
,,,,83,33396,32789,14,,,,,50,,,,,,5,,,,600
,,,100,33399,32779,14,,,,,50,,,,,,3,,,,600
,,,101,33399,32797,14,,,,,50,,,,,,2,,,,600

Я хочу выводить одну запятую между значениями. А также удалите все начальные запятые из начала строки. Например:

9,33380,32785,14,50,3,600
19,33399,32774,14,50,2,600
19,33399,32784,14,50,3,600
38,33380,32789,14,50,1,600
38,33404,32793,14,50,1,600
79,33394,32795,14,50,2,600
83,33396,32789,14,50,5,600
100,33399,32779,14,50,3,600
101,33399,32797,14,50,2,600

Я пытался использовать text.Replace(',',''), но затем он удаляет их все. К сожалению, я не очень хорош в RegEx, и я даже не знаю, возможно ли это с этим.

Любая помощь будет признательна!

Ответы [ 4 ]

4 голосов
/ 23 февраля 2020

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

var result = Regex.Replace(inpyut, ",+", ",").Trim(',');
3 голосов
/ 23 февраля 2020

Существует несколько решений

Разделение по разделителю , и удаление пустых записей (',,'), а затем перестроение строки с тем же разделителем ,.

var result = string.Join(",", ",,,,,9,33380,3272774,,".Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 23 февраля 2020

@ juharr ответ выглядит великолепно, но если производительность - это проблема, может быть лучше обрезать перед заменой и заменить две или более запятых на одну. Таким образом давая:

var result = Regex.Replace(inpyut.Trim(','), ",,+", ",");
0 голосов
/ 23 февраля 2020

Вот мое решение

text = ",,,,,9,33380,32785,14,,,,,50,,,,,,3,,,,600";
while (text.Contains(",,"))
{
    text = text.Replace(",,", ",");
}
if (text.Substring(0, 1) == ",") {
    int textLength = text.Length;
    text = text.Substring(1, textLength - 1);
}

надеюсь, оно вам поможет:)

...