String.빈 문자열을 무시하는 조인 메서드를 선택하시겠습니까?
VB.NET 메서드String.Join(separator, stringArray)
PHP의 inplode와 유사하지만 배열의 모든 null 요소는 빈 문자열로 대체되므로 c:
Dim myArray() as String = { "a", null, "c" }
Console.WriteLine(String.Join(", ", myArray));
// Prints "a, , c"
빈 문자열을 무시하는 구분자로 문자열 집합을 연결하는 간단한 방법이 있습니까?
배열이나 문자열을 사용할 필요가 없습니다.가입이나 다른 것들.다음과 같은 변화가 필요합니다.
("a", "b", "c") --> "a, b, c"
("a", null, "c") --> "a, c"
VB.NET
String.Join(",", myArray.Where(Function(s) Not String.IsNullOrEmpty(s)))
C#
String.Join(",", myArray.Where(s => !string.IsNullOrEmpty(s)))
CSharp에서는 다음과 같이 수행할 수 있습니다.
String.Join(",", arr.Where(s => !String.IsNullOrEmpty(s)));
.NET 2.0(LINQ 없음)에서 이를 수행하려면 함수를 작성하지 않고 SQL-Server Reporting Services를 사용해야 합니다.
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[] { '\u0008' }, System.StringSplitOptions.RemoveEmptyEntries)
);
System.Console.WriteLine(lala);
이것은 문자열에서 문자 백스페이스가 발생하지 않는다고 가정합니다(키보드로 이 문자를 단순히 입력할 수 없기 때문에 일반적으로 참이어야 합니다).
또한 데이터베이스에서 값을 가져오는 경우 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'a'
SET @in_SearchTerm2 = N''
SET @in_SearchTerm3 = N'c'
SET @in_SearchTerm4 = N''
SELECT
COALESCE
(
STUFF
(
(
SELECT ' / ' + RPT_SearchTerm AS [text()]
FROM
(
SELECT NULLIF(@in_SearchTerm1, N'') AS RPT_SearchTerm, 1 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm2, N'') AS RPT_SearchTerm, 2 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm3, N'') AS RPT_SearchTerm, 3 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm4, N'') AS RPT_SearchTerm, 4 AS RPT_Sort
) AS tempT
WHERE RPT_SearchTerm IS NOT NULL
ORDER BY RPT_Sort
FOR XML PATH(N''), TYPE
).value('.', 'nvarchar(MAX)')
,1
,3
,N''
)
,N''
) AS RPT_SearchTerms
또 다른 옵션은 LINQ의 편리한 null 필터를 사용하는 것입니다.
String.Join(",", myArray.OfType<string>())
다음을 시도합니다.
var finalString = String.Join(",", ExampleArrayOfObjects.Where(x => !String.IsNullOrEmpty(x.TestParameter)).Select(x => x.TestParameter));
VB.NET에 적합합니다.
Join(*yourArray*.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray(), *yourDelimiter*)
언급URL : https://stackoverflow.com/questions/16325995/string-join-method-that-ignores-empty-strings
'code' 카테고리의 다른 글
알파벳 순으로 순서 나열 (0) | 2023.05.28 |
---|---|
Git 저장소 디렉터리 위치를 변경합니다. (0) | 2023.05.28 |
존재하지 않는 경우에만 mkdir (0) | 2023.05.23 |
XmlSerializer - 유형을 반영하는 동안 오류가 발생했습니다. (0) | 2023.05.23 |
git + LaTeX 워크플로우 (0) | 2023.05.23 |