Во-первых, получите имена столбцов, где есть фактическое значение, а не ноль. Это может быть сделано с помощью функции, такой как:
val notNullColNames = Seq("A", "B", "C", "D").map(c => when(col(c).isNotNull, c))
. Для создания массива значений обычно используется array
, однако, это все равно будет возвращать ноль, когда входное значение равно нулю. Вместо этого, одним из решений является использование concat_ws
и split
для удаления любых нулевых значений:
df.select($"id", split(concat_ws(",", notNullColNames:_*), ",").as("newColumn"))
Для примера ввода это будет выводить:
+---+------------+
| id| newColumn|
+---+------------+
| 1| [B, C]|
| 2|[A, B, C, D]|
| 3| [A]|
+---+------------+
You can use XML Literals to achieve a similar effect:
Imports System.XML
Imports System.XML.Linq
Imports System.Core
Dim s As String = <a>Hello
World</a>.Value
Remember that if you have special characters, you should use a CDATA block:
Dim s As String = <![CDATA[Hello
World & Space]]>.Value
Multi-line string literals were introduced in Visual Basic 14 (in Visual Studio 2015). The above example can be now written as:
Dim s As String = "Hello
World & Space"
MSDN article isn't updated yet (as of 2015-08-01), so check some answers below for details.
Details are added to the Roslyn New-Language-Features-in-VB-14 Github repository.
Нет, VB.NET еще не имеет такой функции. Это будет доступно в следующем повторении VB (Visual Basic 10) однако (ссылка)
если это похоже на C# (у меня нет VB.Net установленным), можно снабдить префиксом строку
foo = @"Multiline
String"
это также полезно для вещей как "C:\Windows\System32\" - это по существу выключает выход и включает мультилинию.
VB.Net не имеет такой функции, и он не будет прибывать в Visual Studio 2010. Функцию, которую отсылает jirwin, называют неявным продолжением строки. Это имеет отношение к удалению _ от многострочного оператора или выражения. Это действительно устраняет необходимость завершить многострочную строку с _, но в VB нет все еще никакого строкового литерала mult-строки.
Пример для многострочной строки
Visual Studio 2008
Dim x = "line1" & vbCrlf & _
"line2"
Visual Studio 2010
Dim x = "line1" & vbCrlf &
"line2"