Поймать нулевые значения перед добавлением в строку - PullRequest
1 голос
/ 27 октября 2010

Эй, ребята, я могу только извиниться за то, что задал такой вопрос, но сегодня я уже второй раз полагаюсь на этот удивительный форум:)

У меня есть строка, которая состоит из значений из массива, взятого из таблицы Excel, только некоторые из этих значений являются пустыми. Я вывожу эти значения в файл CSV, но не хочу выводить пустые значения, эти значения выводятся в виде запятых и поэтому дают мне дополнительные строки в моем файле CSV.

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

enter code here//Get a range of data. 

range = objSheet.get_Range(ranges1, ranges2);

//Retrieve the data from the range. 
Object[,] saRet;
saRet = (System.Object[,])range.get_Value(Missing.Value);

//Determine the dimensions of the array. 
long iRows;
long iCols;
iRows = saRet.GetUpperBound(0);
iCols = saRet.GetUpperBound(1);

//Build a string that contains the data of the array. 
String valueString;
valueString = "";

System.IO.StreamWriter OutWrite = new System.IO.StreamWriter("h:\\out.csv");

    for (long rowCounter = 1; rowCounter <= iRows; rowCounter++)
    {

        for (long colCounter = 1; colCounter <= iCols; colCounter++)
        {
            //Write the next value into the string.
            valueString = String.Concat(valueString, Convert.ToString(saRet[rowCounter, colCounter]) + ", ");
        }

        //Write in a new line. 
        {
            valueString = String.Concat(valueString, "\n");
        }
    }

    //Report the value of the array.

    MessageBox.Show(valueString, "Array Values");

    OutWrite.WriteLine(valueString);
    OutWrite.Close();
    OutWrite.Dispose();
}

Ура, спасибо за терпение!

Энди.

Ответы [ 4 ]

4 голосов
/ 27 октября 2010

Я думаю, что вы ищете метод String.IsNullOrEmpty .

(или метод String.IsNullOrWhiteSpace в .Net 4)

2 голосов
/ 27 октября 2010
 public static class ExtensionLib
 {

        public static string MyConcat(this string input, params string[] others)
        {
            if (others == null || others.Length == 0)
               return input;
            string retVal = input??"";
            foreach(string str in others)
            {
                if (String.IsNullOrEmpty(str))
                    return input;
                retVal += str;
            }
            return retVal;
        }
 }

и используйте его как ниже:

....

valueString.MyConcat(arg1, arg2, ...);

Позаботьтесь об этой строке:

valueString = String.Concat(valueString, Convert.ToString(saRet[rowCounter, colCounter]) + ", ");

вместо этого напишите

valueString = valueString.MyConcat(Convert.ToString(saRet[rowCounter, colCounter]), ", ");
1 голос
/ 27 октября 2010
String valueString;
valueString = "";
if (!valueString.Equals(compare))

Вы можете просто переписать это как:

if (!String.IsNullOrEmpty(compare))

На самом деле, вы должны. Не нужно заново изобретать то, что предоставляет .NET.

0 голосов
/ 27 октября 2010
newValue += (oldValue ?? string.empty)
...