String.Join 方法

定義

串連指定之陣列的項目或集合的成員,並在每個項目或成員之間使用指定的分隔符號。

多載

Join(Char, Object[])

在每個成員間使用所指定分隔符號來串連物件陣列的字串表示。

Join(Char, String[])

在每個成員間使用所指定分隔符號來串連字串陣列。

Join(String, IEnumerable<String>)

串連類型 IEnumerable<T> 之已建構的 String 集合的成員,並在每個成員之間使用指定的分隔符號。

Join(String, Object[])

串連物件陣列的項目,並在每個項目之間使用指定的分隔符號。

Join(String, String[])

串連字串陣列的所有項目,並在每個項目之間使用指定的分隔符號。

Join(Char, String[], Int32, Int32)

在每個成員間使用所指定分隔符號來串連字串陣列,從位在 startIndex 位置 value 中的元素開始,最多串連 count 個元素。

Join(String, String[], Int32, Int32)

串連字串陣列的指定項目,並在每個項目之間使用指定的分隔符號。

Join<T>(Char, IEnumerable<T>)

串連集合的成員,並在每個成員之間使用指定的分隔符號。

Join<T>(String, IEnumerable<T>)

串連集合的成員,並在每個成員之間使用指定的分隔符號。

Join(Char, Object[])

在每個成員間使用所指定分隔符號來串連物件陣列的字串表示。

public:
 static System::String ^ Join(char separator, ... cli::array <System::Object ^> ^ values);
public static string Join (char separator, params object?[] values);
public static string Join (char separator, params object[] values);
static member Join : char * obj[] -> string
Public Shared Function Join (separator As Char, ParamArray values As Object()) As String

參數

separator
Char

作為分隔符號使用的字元。 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。

values
Object[]

物件陣列,其字串表示會串連在一起。

傳回

String

字串,由使用 separator 字元分隔的 values 元素組成。

-或-

Empty 如果 values 有零個元素。

例外狀況

valuenull

產生的字串長度會溢出允許長度上限 (MaxValue)。

適用於

Join(Char, String[])

在每個成員間使用所指定分隔符號來串連字串陣列。

public:
 static System::String ^ Join(char separator, ... cli::array <System::String ^> ^ value);
public static string Join (char separator, params string?[] value);
public static string Join (char separator, params string[] value);
static member Join : char * string[] -> string
Public Shared Function Join (separator As Char, ParamArray value As String()) As String

參數

separator
Char

作為分隔符號使用的字元。 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。

value
String[]

要串連的字串陣列。

傳回

String

字串,由使用 separator 字元分隔的 value 元素組成。

-或-

Empty 如果 value 有零個元素。

例外狀況

valuenull

產生的字串長度會溢出允許長度上限 (MaxValue)。

適用於

Join(String, IEnumerable<String>)

串連類型 IEnumerable<T> 之已建構的 String 集合的成員,並在每個成員之間使用指定的分隔符號。

public:
 static System::String ^ Join(System::String ^ separator, System::Collections::Generic::IEnumerable<System::String ^> ^ values);
public static string Join (string separator, System.Collections.Generic.IEnumerable<string> values);
public static string Join (string? separator, System.Collections.Generic.IEnumerable<string?> values);
[System.Runtime.InteropServices.ComVisible(false)]
public static string Join (string separator, System.Collections.Generic.IEnumerable<string> values);
static member Join : string * seq<string> -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
static member Join : string * seq<string> -> string
Public Shared Function Join (separator As String, values As IEnumerable(Of String)) As String

參數

separator
String

要當作分隔符號的字串。separator 只有在 values 有一個以上的項目時,才會包含在傳回的字串中。

values
IEnumerable<String>

包含要串連之字串的集合。

傳回

String

字串,由 values 的項目組成,且每個項目之間都會以 separator 字串分隔。

-或-

Empty 如果 values 有零個元素。

屬性

例外狀況

valuesnull

產生的字串長度會溢出允許長度上限 (MaxValue)。

範例

下列範例會使用 Eratosthenes 演算法的 Sieve 來計算小於或等於100的質數。 它會將結果指派給 List<T> 型別的物件 String ,然後傳遞給 Join(String, IEnumerable<String>) 方法。

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      int maxPrime = 100;
      List<int> primes = GetPrimes(maxPrime);
      Console.WriteLine("Primes less than {0}:", maxPrime);
      Console.WriteLine("   {0}", String.Join(" ", primes));
   }

   private static List<int> GetPrimes(int maxPrime)
   {
      Array values = Array.CreateInstance(typeof(int), 
                              new int[] { maxPrime - 1}, new int[] { 2 });
      // Use Sieve of Eratosthenes to determine prime numbers.
      for (int ctr = values.GetLowerBound(0); ctr <= (int) Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))); ctr++)
      {
                           
         if ((int) values.GetValue(ctr) == 1) continue;
         
         for (int multiplier = ctr; multiplier <=  maxPrime / 2; multiplier++)
            if (ctr * multiplier <= maxPrime)
               values.SetValue(1, ctr * multiplier);
      }      
      
      List<int> primes = new List<int>();
      for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++)
         if ((int) values.GetValue(ctr) == 0) 
            primes.Add(ctr);
      return primes;
   }   
}
// The example displays the following output:
//    Primes less than 100:
//       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim maxPrime As Integer = 100
      Dim primes As List(Of String) = GetPrimes(maxPrime)
      Console.WriteLine("Primes less than {0}:", maxPrime)
      Console.WriteLine("   {0}", String.Join(" ", primes))
   End Sub
   
   Private Function GetPrimes(maxPrime As Integer) As List(Of String)
      Dim values As Array = Array.CreateInstance(GetType(Integer), _
                              New Integer() { maxPrime - 1}, New Integer(){ 2 }) 
        ' Use Sieve of Eratosthenes to determine prime numbers.
      For ctr As Integer = values.GetLowerBound(0) To _
                           CInt(Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))))
         If CInt(values.GetValue(ctr)) = 1 Then Continue For
         
         For multiplier As Integer = ctr To maxPrime \ 2
            If ctr * multiplier <= maxPrime Then values.SetValue(1, ctr * multiplier)
         Next   
      Next      
      
      Dim primes As New List(Of String)
      For ctr As Integer = values.GetLowerBound(0) To values.GetUpperBound(0)
         If CInt(values.GetValue(ctr)) = 0 Then primes.Add(ctr.ToString())
      Next            
      Return primes
   End Function   
End Module
' The example displays the following output:
'    Primes less than 100:
'       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

備註

如果 separatornull ,則會改為使用 () 的空字串 String.Empty 。 如果的任何成員 valuesnull ,則會改用空字串。

Join(String, IEnumerable<String>) 是便利的方法,可讓您串連集合中的每個元素, IEnumerable(Of String) 而不需要先將元素轉換成字串陣列。 這特別適用于 Language-Integrated 查詢 (LINQ) 查詢運算式。 下列範例 List(Of String) 會將包含字母的大寫字母或小寫字母的物件,傳遞至 lambda 運算式,以選取等於或大於特定字母的字母 (在此範例中為 "M" ) 。 IEnumerable(Of String)方法所傳回的集合 Enumerable.Where 會傳遞至方法, Join(String, IEnumerable<String>) 以將結果顯示為單一字串。

using System;
using System.Collections.Generic;
using System.Linq;

public class Example
{
   public static void Main()
   {
      string output = String.Join(" ", GetAlphabet(true).Where( letter => 
                      letter.CompareTo("M") >= 0));
      Console.WriteLine(output);  
   }

   private static List<string> GetAlphabet(bool upper)
   {
      List<string> alphabet = new List<string>();
      int charValue = upper ? 65 : 97;
      for (int ctr = 0; ctr <= 25; ctr++)
         alphabet.Add(((char)(charValue + ctr)).ToString());
      return alphabet; 
   }
}
// The example displays the following output:
//      M N O P Q R S T U V W X Y Z
Imports System.Collections.Generic
Imports System.Linq

Module modMain
   Public Sub Main()
      Dim output As String = String.Join(" ", GetAlphabet(True).Where(Function(letter) _
                                                         letter >= "M"))
        
      Console.WriteLine(output)                                     
   End Sub
   
   Private Function GetAlphabet(upper As Boolean) As List(Of String)
      Dim alphabet As New List(Of String)
      Dim charValue As Integer = CInt(IIf(upper, 65, 97))
      For ctr As Integer = 0 To 25
         alphabet.Add(ChrW(charValue + ctr).ToString())
      Next
      Return alphabet 
   End Function
End Module
' The example displays the following output:
'      M N O P Q R S T U V W X Y Z

另請參閱

適用於

Join(String, Object[])

串連物件陣列的項目,並在每個項目之間使用指定的分隔符號。

public:
 static System::String ^ Join(System::String ^ separator, ... cli::array <System::Object ^> ^ values);
public static string Join (string separator, params object[] values);
public static string Join (string? separator, params object?[] values);
[System.Runtime.InteropServices.ComVisible(false)]
public static string Join (string separator, params object[] values);
static member Join : string * obj[] -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
static member Join : string * obj[] -> string
Public Shared Function Join (separator As String, ParamArray values As Object()) As String

參數

separator
String

要當做分隔符號的字串。 只有在 values 的元素有一個以上時,separator 才會包含在傳回的字串中。

values
Object[]

含有要串連之項目的陣列。

傳回

String

字串,由 values 的項目組成,且每個項目之間都會以 separator 字串分隔。

-或-

Empty 如果 values 有零個元素。

-或-

僅 .NET Framework: Empty 如果的第一個專案 values 是,則為 null

屬性

例外狀況

valuesnull

產生的字串長度會溢出允許長度上限 (MaxValue)。

範例

下列範例會使用 Eratosthenes 演算法的 Sieve 來計算小於或等於100的質數。 它會將結果指派給整數陣列,然後將它傳遞給 Join(String, Object[]) 方法。

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      int maxPrime = 100;
      int[] primes = GetPrimes(maxPrime);
      Console.WriteLine("Primes less than {0}:", maxPrime);
      Console.WriteLine("   {0}", String.Join(" ", primes));
   }

   private static int[] GetPrimes(int maxPrime)
   {
      Array values = Array.CreateInstance(typeof(int), 
                              new int[] { maxPrime - 1}, new int[] { 2 }); 
      // Use Sieve of Eratosthenes to determine prime numbers.
      for (int ctr = values.GetLowerBound(0); ctr <= (int) Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))); ctr++)
      {
                           
         if ((int) values.GetValue(ctr) == 1) continue;
         
         for (int multiplier = ctr; multiplier <=  maxPrime / 2; multiplier++)
            if (ctr * multiplier <= maxPrime)
               values.SetValue(1, ctr * multiplier);
      }      
      
      List<int> primes = new List<int>();
      for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++)
         if ((int) values.GetValue(ctr) == 0) 
            primes.Add(ctr);
      return primes.ToArray();
   }   
}
// The example displays the following output:
//    Primes less than 100:
//       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Module Example
   Public Sub Main()
      Dim maxPrime As Integer = 100
      Dim primes() As Integer = GetPrimes(maxPrime)
      Console.WriteLine("Primes less than {0}:", maxPrime)
      Console.WriteLine("   {0}", String.Join(" ", primes))
   End Sub
   
   Private Function GetPrimes(maxPrime As Integer) As Integer()
      Dim values As Array = Array.CreateInstance(GetType(Integer), _
                              New Integer() { maxPrime - 1}, New Integer(){ 2 }) 
        ' Use Sieve of Eratosthenes to determine prime numbers.
      For ctr As Integer = values.GetLowerBound(0) To _
                           CInt(Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))))
         If CInt(values.GetValue(ctr)) = 1 Then Continue For
         
         For multiplier As Integer = ctr To maxPrime \ 2
            If ctr * multiplier <= maxPrime Then values.SetValue(1, ctr * multiplier)
         Next   
      Next      
      
      Dim primes As New System.Collections.Generic.List(Of Integer)
      For ctr As Integer = values.GetLowerBound(0) To values.GetUpperBound(0)
         If CInt(values.GetValue(ctr)) = 0 Then primes.Add(ctr)
      Next            
      Return primes.ToArray()
   End Function   
End Module
' The example displays the following output:
'    Primes less than 100:
'       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

備註

如果 separatornull ,或如果第一個元素以外的任何專案 valuesnull ,則會改用空字串 (String.Empty) 。 如果的第一個專案是,請參閱呼叫端的附注一節 values null

Join(String, Object[]) 是便利的方法,可讓您串連物件陣列中的每個元素,而不需要明確地將其元素轉換成字串。 陣列中每個物件的字串表示都是藉由呼叫該物件的 ToString 方法所衍生。

給呼叫者的注意事項

僅 .NET Framework:如果的第一個專案 valuesnull ,則 Join(String, Object[]) 方法不會串連中的元素,而會傳回 values Empty 。 有許多解決此問題的因應措施。 最簡單的方法是將值指派 Empty 給陣列的第一個元素,如下列範例所示。

::: code language = "csharp" source = "~/samples/snippets/csharp/VS_Snippets_CLR_System/system.string.join/cs/joinfix1.cs" interactive = "try-dotnet-method" id = "Snippet6":::::: code language = "vb" source = "~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.string.join/vb/joinfix1.vb" id = "Snippet6":::

另請參閱

適用於

Join(String, String[])

串連字串陣列的所有項目,並在每個項目之間使用指定的分隔符號。

public:
 static System::String ^ Join(System::String ^ separator, ... cli::array <System::String ^> ^ value);
public:
 static System::String ^ Join(System::String ^ separator, cli::array <System::String ^> ^ value);
public static string Join (string separator, params string[] value);
public static string Join (string? separator, params string?[] value);
public static string Join (string separator, string[] value);
static member Join : string * string[] -> string
Public Shared Function Join (separator As String, ParamArray value As String()) As String
Public Shared Function Join (separator As String, value As String()) As String

參數

separator
String

要當做分隔符號的字串。 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。

value
String[]

含有要串連之項目的陣列。

傳回

String

字串,由 value 中的項目組成,且每個項目之間都會以 separator 字串分隔。

-或-

Empty 如果 values 有零個元素。

例外狀況

valuenull

產生的字串長度會溢出允許長度上限 (MaxValue)。

範例

下列範例會示範 Join 方法。

using namespace System;
String^ MakeLine( int initVal, int multVal, String^ sep )
{
   array<String^>^sArr = gcnew array<String^>(10);
   for ( int i = initVal; i < initVal + 10; i++ )
      sArr[ i - initVal ] = String::Format( "{0, -3}", i * multVal );
   return String::Join( sep, sArr );
}

int main()
{
   Console::WriteLine( MakeLine( 0, 5, ", " ) );
   Console::WriteLine( MakeLine( 1, 6, "  " ) );
   Console::WriteLine( MakeLine( 9, 9, ": " ) );
   Console::WriteLine( MakeLine( 4, 7, "< " ) );
}
// The example displays the following output:
//       0  , 5  , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45
//       6    12   18   24   30   36   42   48   54   60
//       81 : 90 : 99 : 108: 117: 126: 135: 144: 153: 162
//       28 < 35 < 42 < 49 < 56 < 63 < 70 < 77 < 84 < 91
using System;

public class JoinTest
{
    public static void Main()
    {
        Console.WriteLine(MakeLine(0, 5, ", "));
        Console.WriteLine(MakeLine(1, 6, "  "));
        Console.WriteLine(MakeLine(9, 9, ": "));
        Console.WriteLine(MakeLine(4, 7, "< "));
    }

    private static string MakeLine(int initVal, int multVal, string sep)
    {
        string [] sArr = new string [10];

        for (int i = initVal; i < initVal + 10; i++)
            sArr[i - initVal] = String.Format("{0,-3}", i * multVal);

        return String.Join(sep, sArr);
    }
}
// The example displays the following output:
//       0  , 5  , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45
//       6    12   18   24   30   36   42   48   54   60
//       81 : 90 : 99 : 108: 117: 126: 135: 144: 153: 162
//       28 < 35 < 42 < 49 < 56 < 63 < 70 < 77 < 84 < 91
Public Class JoinTest
    
    Public Shared Sub Main()
        
        Console.WriteLine(MakeLine(0, 5, ", "))
        Console.WriteLine(MakeLine(1, 6, "  "))
        Console.WriteLine(MakeLine(9, 9, ": "))
        Console.WriteLine(MakeLine(4, 7, "< "))
    End Sub
    
    
    Private Shared Function MakeLine(initVal As Integer, multVal As Integer, sep As String) As String
        Dim sArr(10) As String
        Dim i As Integer
        
        
        For i = initVal To (initVal + 10) - 1
            sArr((i - initVal)) = [String].Format("{0,-3}", i * multVal)
        
        Next i
        Return [String].Join(sep, sArr)
    End Function 'MakeLine
End Class
' The example displays the following output:
'       0  , 5  , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45
'       6    12   18   24   30   36   42   48   54   60
'       81 : 90 : 99 : 108: 117: 126: 135: 144: 153: 162
'       28 < 35 < 42 < 49 < 56 < 63 < 70 < 77 < 84 < 91

備註

例如,如果 separator 是 "," 且的元素為 value "apple"、"橙色"、"grape" 和 "梨",則會傳回 Join(separator, value) "apple,橙色,grape,梨"。

如果 separatornull ,則會改為使用 () 的空字串 String.Empty 。 如果中的任何元素 valuenull ,則會改用空字串。

另請參閱

適用於

Join(Char, String[], Int32, Int32)

在每個成員間使用所指定分隔符號來串連字串陣列,從位在 startIndex 位置 value 中的元素開始,最多串連 count 個元素。

public:
 static System::String ^ Join(char separator, cli::array <System::String ^> ^ value, int startIndex, int count);
public static string Join (char separator, string?[] value, int startIndex, int count);
public static string Join (char separator, string[] value, int startIndex, int count);
static member Join : char * string[] * int * int -> string
Public Shared Function Join (separator As Char, value As String(), startIndex As Integer, count As Integer) As String

參數

separator
Char

在每個成員間使用所指定分隔符號來串連字串陣列,從位於指定索引的元素開始,並包含指定的元素數量。

value
String[]

要串連的字串陣列。

startIndex
Int32

value 中要串連的第一個項目。

count
Int32

value 中要串連的元素數目,從 startIndex 位置中的元素開始。

傳回

String

count value 開頭為字元分隔之元素的字串 startIndex separator

-或-

Empty 如果 count 為零,則為。

例外狀況

valuenull

startIndexcount 為負值。

-或-

startIndex 大於 value - count 的長度。

產生的字串長度會溢出允許長度上限 (MaxValue)。

適用於

Join(String, String[], Int32, Int32)

串連字串陣列的指定項目,並在每個項目之間使用指定的分隔符號。

public:
 static System::String ^ Join(System::String ^ separator, cli::array <System::String ^> ^ value, int startIndex, int count);
public static string Join (string separator, string[] value, int startIndex, int count);
public static string Join (string? separator, string?[] value, int startIndex, int count);
static member Join : string * string[] * int * int -> string
Public Shared Function Join (separator As String, value As String(), startIndex As Integer, count As Integer) As String

參數

separator
String

要當做分隔符號的字串。 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。

value
String[]

含有要串連之項目的陣列。

startIndex
Int32

value 中要使用的第一個項目。

count
Int32

要使用的 value 項目數目。

傳回

String

count value 開頭為字元分隔之元素的字串 startIndex separator

-或-

Empty 如果 count 為零,則為。

例外狀況

valuenull

startIndexcount 小於 0。

-或-

startIndex 加上 count 大於 value中的項目數。

記憶體不足。

範例

下列範例會串連水果名稱陣列中的兩個元素。

// Sample for String::Join(String, String[], int int)
using namespace System;
int main()
{
   array<String^>^val = {"apple","orange","grape","pear"};
   String^ sep = ", ";
   String^ result;
   Console::WriteLine( "sep = '{0}'", sep );
   Console::WriteLine( "val[] = {{'{0}' '{1}' '{2}' '{3}'}}", val[ 0 ], val[ 1 ], val[ 2 ], val[ 3 ] );
   result = String::Join( sep, val, 1, 2 );
   Console::WriteLine( "String::Join(sep, val, 1, 2) = '{0}'", result );
}

/*
This example produces the following results:
sep = ', '
val[] = {'apple' 'orange' 'grape' 'pear'}
String::Join(sep, val, 1, 2) = 'orange, grape'
*/
String[] val = {"apple", "orange", "grape", "pear"};
String sep   = ", ";
String result;

Console.WriteLine("sep = '{0}'", sep);
Console.WriteLine("val[] = {{'{0}' '{1}' '{2}' '{3}'}}", val[0], val[1], val[2], val[3]);
result = String.Join(sep, val, 1, 2);
Console.WriteLine("String.Join(sep, val, 1, 2) = '{0}'", result);

// This example produces the following results:
// sep = ', '
// val[] = {'apple' 'orange' 'grape' 'pear'}
// String.Join(sep, val, 1, 2) = 'orange, grape'
Class Sample
   Public Shared Sub Main()
      Dim val As [String]() =  {"apple", "orange", "grape", "pear"}
      Dim sep As [String] = ", "
      Dim result As [String]
      
      Console.WriteLine("sep = '{0}'", sep)
      Console.WriteLine("val() = {{'{0}' '{1}' '{2}' '{3}'}}", val(0), val(1), val(2), val(3))
      result = [String].Join(sep, val, 1, 2)
      Console.WriteLine("String.Join(sep, val, 1, 2) = '{0}'", result)
   End Sub
End Class 
'This example displays the following output:
'       sep = ', '
'       val() = {'apple' 'orange' 'grape' 'pear'}
'       String.Join(sep, val, 1, 2) = 'orange, grape'

備註

例如,如果 separator 是 "," 且的元素為 value "apple"、"橙色"、"grape" 和 "梨",則會傳回 Join(separator, value, 1, 2) "橙色,grape"。

如果 separatornull ,則會改為使用 () 的空字串 String.Empty 。 如果中的任何元素 valuenull ,則會改用空字串。

另請參閱

適用於

Join<T>(Char, IEnumerable<T>)

串連集合的成員,並在每個成員之間使用指定的分隔符號。

public:
generic <typename T>
 static System::String ^ Join(char separator, System::Collections::Generic::IEnumerable<T> ^ values);
public static string Join<T> (char separator, System.Collections.Generic.IEnumerable<T> values);
static member Join : char * seq<'T> -> string
Public Shared Function Join(Of T) (separator As Char, values As IEnumerable(Of T)) As String

類型參數

T

values 之成員的類型。

參數

separator
Char

作為分隔符號使用的字元。 只有在 values 的元素有一個以上時,separator 才會包含在傳回的字串中。

values
IEnumerable<T>

包含要串連之物件的集合。

傳回

String

字串,由使用 separator 字元分隔的 values 成員組成。

-或-

Empty 如果沒有 values 元素,則為。

例外狀況

valuesnull

產生的字串長度會溢出允許長度上限 (MaxValue)。

適用於

Join<T>(String, IEnumerable<T>)

串連集合的成員,並在每個成員之間使用指定的分隔符號。

public:
generic <typename T>
 static System::String ^ Join(System::String ^ separator, System::Collections::Generic::IEnumerable<T> ^ values);
public static string Join<T> (string separator, System.Collections.Generic.IEnumerable<T> values);
public static string Join<T> (string? separator, System.Collections.Generic.IEnumerable<T> values);
[System.Runtime.InteropServices.ComVisible(false)]
public static string Join<T> (string separator, System.Collections.Generic.IEnumerable<T> values);
static member Join : string * seq<'T> -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
static member Join : string * seq<'T> -> string
Public Shared Function Join(Of T) (separator As String, values As IEnumerable(Of T)) As String

類型參數

T

values 之成員的類型。

參數

separator
String

要當做分隔符號的字串。 只有在 values 的元素有一個以上時,separator 才會包含在傳回的字串中。

values
IEnumerable<T>

包含要串連之物件的集合。

傳回

String

字串,由 values 的項目組成,且每個項目之間都會以 separator 字串分隔。

-或-

Empty 如果沒有 values 元素,則為。

屬性

例外狀況

valuesnull

產生的字串長度會溢出允許長度上限 (MaxValue)。

範例

下列範例會使用 Eratosthenes 演算法的 Sieve 來計算小於或等於100的質數。 它會將結果指派給 List<T> integer 類型的物件,然後傳遞給 Join<T>(String, IEnumerable<T>) 方法。

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      int maxPrime = 100;
      List<int> primes = GetPrimes(maxPrime);
      Console.WriteLine("Primes less than {0}:", maxPrime);
      Console.WriteLine("   {0}", String.Join(" ", primes));
   }

   private static List<int> GetPrimes(int maxPrime)
   {
      Array values = Array.CreateInstance(typeof(int), 
                              new int[] { maxPrime - 1}, new int[] { 2 });
      // Use Sieve of Eratosthenes to determine prime numbers.
      for (int ctr = values.GetLowerBound(0); ctr <= (int) Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))); ctr++)
      {
                           
         if ((int) values.GetValue(ctr) == 1) continue;
         
         for (int multiplier = ctr; multiplier <=  maxPrime / 2; multiplier++)
            if (ctr * multiplier <= maxPrime)
               values.SetValue(1, ctr * multiplier);
      }      
      
      List<int> primes = new List<int>();
      for (int ctr = values.GetLowerBound(0); ctr <= values.GetUpperBound(0); ctr++)
         if ((int) values.GetValue(ctr) == 0) 
            primes.Add(ctr);
      return primes;
   }   
}
// The example displays the following output:
//    Primes less than 100:
//       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim maxPrime As Integer = 100
      Dim primes As List(Of Integer) = GetPrimes(maxPrime)
      Console.WriteLine("Primes less than {0}:", maxPrime)
      Console.WriteLine("   {0}", String.Join(" ", primes))
   End Sub
   
   Private Function GetPrimes(maxPrime As Integer) As List(Of Integer)
      Dim values As Array = Array.CreateInstance(GetType(Integer), _
                              New Integer() { maxPrime - 1}, New Integer(){ 2 }) 
        ' Use Sieve of Eratosthenes to determine prime numbers.
      For ctr As Integer = values.GetLowerBound(0) To _
                           CInt(Math.Ceiling(Math.Sqrt(values.GetUpperBound(0))))
         If CInt(values.GetValue(ctr)) = 1 Then Continue For
         
         For multiplier As Integer = ctr To maxPrime \ 2
            If ctr * multiplier <= maxPrime Then values.SetValue(1, ctr * multiplier)
         Next   
      Next      
      
      Dim primes As New System.Collections.Generic.List(Of Integer)
      For ctr As Integer = values.GetLowerBound(0) To values.GetUpperBound(0)
         If CInt(values.GetValue(ctr)) = 0 Then primes.Add(ctr)
      Next            
      Return primes
   End Function   
End Module
' The example displays the following output:
'    Primes less than 100:
'       2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

備註

如果 separatornull ,則會改為使用 () 的空字串 String.Empty 。 如果的任何成員 valuesnull ,則會改用空字串。

Join<T>(String, IEnumerable<T>) 是便利的方法,可讓您串連集合的每個成員, IEnumerable<T> 而不需要先將它們轉換成字串。 集合中每個物件的字串表示 IEnumerable<T> 都是藉由呼叫該物件的 ToString 方法所衍生。

這種方法特別適用于 Language-Integrated 查詢 (LINQ) 查詢運算式。 例如,下列程式碼會定義非常簡單的 Animal 類別,其中包含動物的名稱及其所屬的順序。 然後,它會定義 List<T> 包含許多物件的物件 AnimalEnumerable.Where會呼叫擴充方法,將 AnimalOrder 屬性等於 "齧齒動物" 的物件解壓縮。 結果會傳遞給 Join<T>(String, IEnumerable<T>) 方法。

using System;
using System.Collections.Generic;
using System.Linq;

public class Animal
{
   public string Kind;
   public string Order;
   
   public Animal(string kind, string order)
   {
      this.Kind = kind;
      this.Order = order;
   }
   
   public override string ToString()
   {
      return this.Kind;
   }
}

public class Example
{
   public static void Main()
   {
      List<Animal> animals = new List<Animal>();
      animals.Add(new Animal("Squirrel", "Rodent"));
      animals.Add(new Animal("Gray Wolf", "Carnivora"));
      animals.Add(new Animal("Capybara", "Rodent"));
      string output = String.Join(" ", animals.Where( animal => 
                      (animal.Order == "Rodent")));
      Console.WriteLine(output);  
   }
}
// The example displays the following output:
//      Squirrel Capybara
Imports System.Collections.Generic

Public Class Animal
   Public Kind As String
   Public Order As String
   
   Public Sub New(kind As String, order As String)
      Me.Kind = kind
      Me.Order = order
   End Sub
   
   Public Overrides Function ToString() As String
      Return Me.Kind
   End Function
End Class

Module Example
   Public Sub Main()
      Dim animals As New List(Of Animal)
      animals.Add(New Animal("Squirrel", "Rodent"))
      animals.Add(New Animal("Gray Wolf", "Carnivora"))
      animals.Add(New Animal("Capybara", "Rodent")) 
      Dim output As String = String.Join(" ", animals.Where(Function(animal) _
                                           animal.Order = "Rodent"))
      Console.WriteLine(output)                                           
   End Sub
End Module
' The example displays the following output:
'      Squirrel Capybara

另請參閱

適用於