หากต้องการทำใน. NET 2.0 (ไม่มี LINQ) เช่นสำหรับ SQL-Server ReportingServices โดยไม่ต้องเขียนฟังก์ชันให้:
VB.NET
Dim a As String = "", b As String = "b", c As String = "", d As String = "d", e As String = ""
Dim lala As String = String.Join(" / ", String.Join(vbBack, New String() {a, b, c, d, e}).Split(New Char() {ControlChars.Back}, System.StringSplitOptions.RemoveEmptyEntries))
System.Console.WriteLine(lala)
C # (สำหรับผู้ที่เชื่อมโยงไปถึงจาก google และไม่ค้นหา VB.NET)
string a = "", b = "b", c = "", d = "d", e = "";
string lala = string.Join(" / ",
string.Join("\u0008",
new string[] { a, b, c, d, e }
).Split(new char[] {
);
System.Console.WriteLine(lala);
สิ่งนี้จะถือว่าอักขระ backspace ไม่เกิดขึ้นในสตริงของคุณ (โดยปกติควรเป็นจริงเพราะคุณไม่สามารถป้อนอักขระนี้ด้วยแป้นพิมพ์ได้)
นอกจากนี้หากคุณได้รับค่าจากฐานข้อมูลก็จะยิ่งง่ายกว่าเดิมเนื่องจากคุณสามารถทำได้ใน SQL โดยตรง:
PostgreSQL และ MySQL:
SELECT
concat_ws(
, NULLIF(searchTerm1,
, NULLIF(searchTerm2,
, NULLIF(searchTerm3,
, NULLIF(searchTerm4,
) AS RPT_SearchTerms;
และแม้จะมี MS-SQL-Server อันรุ่งโรจน์ก็เป็นไปได้ (PS: นั่นคือการถากถาง):
DECLARE @in_SearchTerm1 nvarchar(100)
DECLARE @in_SearchTerm2 nvarchar(100)
DECLARE @in_SearchTerm3 nvarchar(100)
DECLARE @in_SearchTerm4 nvarchar(100)
SET @in_SearchTerm1 = N
SET @in_SearchTerm2 = N
SET @in_SearchTerm3 = N
SET @in_SearchTerm4 = N
SELECT
COALESCE
(
STUFF
(
(
SELECT
FROM
(
SELECT NULLIF(@in_SearchTerm1, N
UNION ALL SELECT NULLIF(@in_SearchTerm2, N
UNION ALL SELECT NULLIF(@in_SearchTerm3, N
UNION ALL SELECT NULLIF(@in_SearchTerm4, N
) AS tempT
WHERE RPT_SearchTerm IS NOT NULL
ORDER BY RPT_Sort
FOR XML PATH(N
).value(
,1
,3
,N
)
,N
) AS RPT_SearchTerms