Печать с возвратом каретки в текст VB.net

#vb.net #carriage-return

#vb.net #возврат каретки

Вопрос:

Я пытаюсь выполнить печать в текстовый файл, но я пытаюсь напечатать два моих вывода оператора if в одной строке. На данный момент каждый печатает в своей отдельной строке, и мне интересно, как я могу заставить их оставаться на одной и той же. Я попытался выполнить замену (vbCrLf, «»), но это не сработало или, возможно, я не поместил его в нужное место.

 If (atr.Value = "Cat") Then
    file.WriteLine(String.Format("{0} - {1} ", attribute.Value, atrue.Value))
End If
If (atr.Value = "Money") Then
    file.WriteLine(String.Format("{0} - {1} ", attribute.Value, atrue.Value))
End If
  

Вывод:

 Cat - 19
Money - H2E
  

Желаемый результат:

 Cat - 19 Money - H2E
  

Комментарии:

1. Изменить file.WriteLine на file.Write . WriteLine означает запись строки , что означает, что она заканчивается на CR / LF.

2. Кроме того, вы должны использовать ElseIf здесь, чтобы избежать избыточных проверок: If atr.Value = "Cat" Then ... ElseIf atr.Value = "Money" Then ... End If . Или, если вам нужно проверить более двух значений, вместо этого вы можете использовать Select Case оператор .

3. На самом деле, вам, вероятно, следует просто использовать, If atr.Value = "Cat" OrElse atr.Value = "Money" Then ... поскольку вы выполняете один и тот же код в обоих ваших текущих If операторах.

4. Будет выполняться только один из ваших операторов If, потому что atr.Value не может быть «Cat» и «Money» одновременно. Ваш вывод невозможен.

Ответ №1:

Здесь все немного запутано

 If (atr.Value = "Cat") Then
    file.WriteLine(String.Format("{0} - {1} ", attribute.Value, atrue.Value))
End If
If (atr.Value = "Money") Then
    file.WriteLine(String.Format("{0} - {1} ", attribute.Value, atrue.Value))
End If
  

У вас есть 3 переменные:

  • atr
  • atrue
  • attribute

Я ожидаю, что один из них является избыточным / повторяющимся или опечаткой.

Я также предполагаю, что это выполняется в цикле, где значения переменных меняются в каждом цикле, и что вы хотите переключиться на следующую строку только после того, как вы написали «Деньги»

 (Some loop)

    'always write the value
    file.Write($"{attribute.Value} - {atrue.Value} "))

    If (atr.Value = "Money") Then file.WriteLine() 'only write a newline if we wrote Money
  

Комментарии:

1. Да, я только что добавил часть своего кода, чтобы я мог просто узнать, как остановить возврат каретки между двумя операторами if, не нужно фокусироваться на переменных!

2. Возможно, тогда ответ, который вы ищете, так же прост, как использование Write вместо WriteLine then