String.Join 方法

定義

串連指定之陣列的項目或集合的成員,並在每個項目或成員之間使用指定的分隔符號。Concatenates the elements of a specified array or the members of a collection, using the specified separator between each element or member.

多載

Join(Char, Object[])

在每個成員間使用所指定分隔符號來串連物件陣列的字串表示。Concatenates the string representations of an array of objects, using the specified separator between each member.

Join(Char, String[])

在每個成員間使用所指定分隔符號來串連字串陣列。Concatenates an array of strings, using the specified separator between each member.

Join(String, IEnumerable<String>)

串連類型 IEnumerable<T> 之已建構的 String 集合的成員,並在每個成員之間使用指定的分隔符號。Concatenates the members of a constructed IEnumerable<T> collection of type String, using the specified separator between each member.

Join(String, Object[])

串連物件陣列的項目,並在每個項目之間使用指定的分隔符號。Concatenates the elements of an object array, using the specified separator between each element.

Join(String, String[])

串連字串陣列的所有項目,並在每個項目之間使用指定的分隔符號。Concatenates all the elements of a string array, using the specified separator between each element.

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

在每個成員間使用所指定分隔符號來串連字串陣列,從位在 startIndex 位置 value 中的元素開始,最多串連 count 個元素。Concatenates an array of strings, using the specified separator between each member, starting with the element in value located at the startIndex position, and concatenating up to count elements.

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

串連字串陣列的指定項目,並在每個項目之間使用指定的分隔符號。Concatenates the specified elements of a string array, using the specified separator between each element.

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

串連集合的成員,並在每個成員之間使用指定的分隔符號。Concatenates the members of a collection, using the specified separator between each member.

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

串連集合的成員,並在每個成員之間使用指定的分隔符號。Concatenates the members of a collection, using the specified separator between each member.

Join(Char, Object[])

在每個成員間使用所指定分隔符號來串連物件陣列的字串表示。Concatenates the string representations of an array of objects, using the specified separator between each member.

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

作為分隔符號使用的字元。The character to use as a separator. 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。separator is included in the returned string only if value has more than one element.

values
Object[]

物件陣列,其字串表示會串連在一起。An array of objects whose string representations will be concatenated.

傳回

String

字串,由使用 separator 字元分隔的 values 元素組成。A string that consists of the elements of values delimited by the separator character.

-或--or-

Empty 如果 values 有零個元素。Empty if values has zero elements.

例外狀況

valuenullvalue is null.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

適用於

Join(Char, String[])

在每個成員間使用所指定分隔符號來串連字串陣列。Concatenates an array of strings, using the specified separator between each member.

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

作為分隔符號使用的字元。The character to use as a separator. 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。separator is included in the returned string only if value has more than one element.

value
String[]

要串連的字串陣列。An array of strings to concatenate.

傳回

String

字串,由使用 separator 字元分隔的 value 元素組成。A string that consists of the elements of value delimited by the separator character.

-或--or-

Empty 如果 value 有零個元素。Empty if value has zero elements.

例外狀況

valuenullvalue is null.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

適用於

Join(String, IEnumerable<String>)

串連類型 IEnumerable<T> 之已建構的 String 集合的成員,並在每個成員之間使用指定的分隔符號。Concatenates the members of a constructed IEnumerable<T> collection of type String, using the specified separator between each member.

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

要當作分隔符號的字串。separatorThe string to use as a separator.separator 只有在 values 有一個以上的項目時,才會包含在傳回的字串中。is included in the returned string only if values has more than one element.

values
IEnumerable<String>

包含要串連之字串的集合。A collection that contains the strings to concatenate.

傳回

String

字串,由 values 的項目組成,且每個項目之間都會以 separator 字串分隔。A string that consists of the elements of values delimited by the separator string.

-或--or-

Empty 如果 values 有零個元素。Empty if values has zero elements.

屬性

例外狀況

valuesnullvalues is null.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

範例

下列範例會使用 Eratosthenes 演算法的 Sieve 來計算小於或等於100的質數。The following example uses the Sieve of Eratosthenes algorithm to calculate the prime numbers that are less than or equal to 100. 它會將結果指派給 List<T> 型別的物件 String ,然後傳遞給 Join(String, IEnumerable<String>) 方法。It assigns the result to a List<T> object of type String, which it then passes to the Join(String, IEnumerable<String>) method.

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.EmptyIf separator is null, an empty string (String.Empty) is used instead. 如果的任何成員 valuesnull ,則會改用空字串。If any member of values is null, an empty string is used instead.

Join(String, IEnumerable<String>) 是便利的方法,可讓您串連集合中的每個元素, IEnumerable(Of String) 而不需要先將元素轉換成字串陣列。Join(String, IEnumerable<String>) is a convenience method that lets you concatenate each element in an IEnumerable(Of String) collection without first converting the elements to a string array. 這特別適用于 Language-Integrated 查詢 (LINQ) 查詢運算式。It is particularly useful with Language-Integrated Query (LINQ) query expressions. 下列範例 List(Of String) 會將包含字母的大寫字母或小寫字母的物件,傳遞至 lambda 運算式,以選取等於或大於特定字母的字母 (在此範例中為 "M" ) 。The following example passes a List(Of String) object that contains either the uppercase or lowercase letters of the alphabet to a lambda expression that selects letters that are equal to or greater than a particular letter (which, in the example, is "M"). IEnumerable(Of String)方法所傳回的集合 Enumerable.Where 會傳遞至方法, Join(String, IEnumerable<String>) 以將結果顯示為單一字串。The IEnumerable(Of String) collection returned by the Enumerable.Where method is passed to the Join(String, IEnumerable<String>) method to display the result as a single 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(Convert.ToChar(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[])

串連物件陣列的項目,並在每個項目之間使用指定的分隔符號。Concatenates the elements of an object array, using the specified separator between each element.

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

要當做分隔符號的字串。The string to use as a separator. 只有在 values 的元素有一個以上時,separator 才會包含在傳回的字串中。separator is included in the returned string only if values has more than one element.

values
Object[]

含有要串連之項目的陣列。An array that contains the elements to concatenate.

傳回

String

字串,由 values 的項目組成,且每個項目之間都會以 separator 字串分隔。A string that consists of the elements of values delimited by the separator string.

-或--or-

Empty 如果 values 有零個元素。Empty if values has zero elements.

-或--or-

僅 .NET Framework: Empty 如果的第一個專案 values 是,則為 null.NET Framework only: Empty if the first element of values is null.

屬性

例外狀況

valuesnullvalues is null.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

範例

下列範例會使用 Eratosthenes 演算法的 Sieve 來計算小於或等於100的質數。The following example uses the Sieve of Eratosthenes algorithm to calculate the prime numbers that are less than or equal to 100. 它會將結果指派給整數陣列,然後將它傳遞給 Join(String, Object[]) 方法。It assigns the result to a integer array, which it then passes to the Join(String, Object[]) method.

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) 。If separator is null or if any element of values other than the first element is null, an empty string (String.Empty) is used instead. 如果的第一個專案是,請參閱呼叫端的附注一節 values nullSee the Notes for Callers section if the first element of values is null.

Join(String, Object[]) 是便利的方法,可讓您串連物件陣列中的每個元素,而不需要明確地將其元素轉換成字串。Join(String, Object[]) is a convenience method that lets you concatenate each element in an object array without explicitly converting its elements to strings. 陣列中每個物件的字串表示都是藉由呼叫該物件的 ToString 方法所衍生。The string representation of each object in the array is derived by calling that object's ToString method.

給呼叫者的注意事項

僅 .NET Framework:如果的第一個專案 valuesnull ,則 Join(String, Object[]) 方法不會串連中的元素,而會傳回 values Empty.NET Framework only: If the first element of values is null, the Join(String, Object[]) method does not concatenate the elements in values but instead returns Empty. 有許多解決此問題的因應措施。A number of workarounds for this issue are available. 最簡單的方法是將值指派 Empty 給陣列的第一個元素,如下列範例所示。The easiest is to assign a value of Empty to the first element of the array, as the following example shows.

[! code-csharp-interactivesystem.string. Join # 6][! code-vbsystem.string. Join # 6][!code-csharp-interactiveSystem.String.Join#6] [!code-vbSystem.String.Join#6]

另請參閱

適用於

Join(String, String[])

串連字串陣列的所有項目,並在每個項目之間使用指定的分隔符號。Concatenates all the elements of a string array, using the specified separator between each element.

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

要當做分隔符號的字串。The string to use as a separator. 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。separator is included in the returned string only if value has more than one element.

value
String[]

含有要串連之項目的陣列。An array that contains the elements to concatenate.

傳回

String

字串,由 value 中的項目組成,且每個項目之間都會以 separator 字串分隔。A string that consists of the elements in value delimited by the separator string.

-或--or-

Empty 如果 values 有零個元素。Empty if values has zero elements.

例外狀況

valuenullvalue is null.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

範例

下列範例會示範 Join 方法。The following example demonstrates the Join method.

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,梨"。For example, if separator is ", " and the elements of value are "apple", "orange", "grape", and "pear", Join(separator, value) returns "apple, orange, grape, pear".

如果 separatornull ,則會改為使用 () 的空字串 String.EmptyIf separator is null, an empty string (String.Empty) is used instead. 如果中的任何元素 valuenull ,則會改用空字串。If any element in value is null, an empty string is used instead.

另請參閱

適用於

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

在每個成員間使用所指定分隔符號來串連字串陣列,從位在 startIndex 位置 value 中的元素開始,最多串連 count 個元素。Concatenates an array of strings, using the specified separator between each member, starting with the element in value located at the startIndex position, and concatenating up to count elements.

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

在每個成員間使用所指定分隔符號來串連字串陣列,從位於指定索引的元素開始,並包含指定的元素數量。Concatenates an array of strings, using the specified separator between each member, starting with the element located at the specified index and including a specified number of elements.

value
String[]

要串連的字串陣列。An array of strings to concatenate.

startIndex
Int32

value 中要串連的第一個項目。The first item in value to concatenate.

count
Int32

value 中要串連的元素數目,從 startIndex 位置中的元素開始。The number of elements from value to concatenate, starting with the element in the startIndex position.

傳回

String

count value 開頭為字元分隔之元素的字串 startIndex separatorA string that consists of count elements of value starting at startIndex delimited by the separator character.

-或--or-

Empty 如果 count 為零,則為。Empty if count is zero.

例外狀況

valuenullvalue is null.

startIndexcount 為負值。startIndex or count are negative.

-或--or-

startIndex 大於 value - count 的長度。startIndex is greater than the length of value - count.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

適用於

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

串連字串陣列的指定項目,並在每個項目之間使用指定的分隔符號。Concatenates the specified elements of a string array, using the specified separator between each element.

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

要當做分隔符號的字串。The string to use as a separator. 只有在 value 的元素有一個以上時,separator 才會包含在傳回的字串中。separator is included in the returned string only if value has more than one element.

value
String[]

含有要串連之項目的陣列。An array that contains the elements to concatenate.

startIndex
Int32

value 中要使用的第一個項目。The first element in value to use.

count
Int32

要使用的 value 項目數目。The number of elements of value to use.

傳回

String

count value 開頭為字元分隔之元素的字串 startIndex separatorA string that consists of count elements of value starting at startIndex delimited by the separator character.

-或--or-

Empty 如果 count 為零,則為。Empty if count is zero.

例外狀況

valuenullvalue is null.

startIndexcount 小於 0。startIndex or count is less than 0.

-或--or-

startIndex 加上 count 大於 value中的項目數。startIndex plus count is greater than the number of elements in value.

記憶體不足。Out of memory.

範例

下列範例會串連水果名稱陣列中的兩個元素。The following example concatenates two elements from an array of names of fruit.

// 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"。For example, if separator is ", " and the elements of value are "apple", "orange", "grape", and "pear", Join(separator, value, 1, 2) returns "orange, grape".

如果 separatornull ,則會改為使用 () 的空字串 String.EmptyIf separator is null, an empty string (String.Empty) is used instead. 如果中的任何元素 valuenull ,則會改用空字串。If any element in value is null, an empty string is used instead.

另請參閱

適用於

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

串連集合的成員,並在每個成員之間使用指定的分隔符號。Concatenates the members of a collection, using the specified separator between each member.

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 之成員的類型。The type of the members of values.

參數

separator
Char

作為分隔符號使用的字元。The character to use as a separator. 只有在 values 的元素有一個以上時,separator 才會包含在傳回的字串中。separator is included in the returned string only if values has more than one element.

values
IEnumerable<T>

包含要串連之物件的集合。A collection that contains the objects to concatenate.

傳回

String

字串,由使用 separator 字元分隔的 values 成員組成。A string that consists of the members of values delimited by the separator character.

-或--or-

Empty 如果沒有 values 元素,則為。Empty if values has no elements.

例外狀況

valuesnullvalues is null.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

適用於

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

串連集合的成員,並在每個成員之間使用指定的分隔符號。Concatenates the members of a collection, using the specified separator between each member.

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 之成員的類型。The type of the members of values.

參數

separator
String

要當做分隔符號的字串。The string to use as a separator. 只有在 values 的元素有一個以上時,separator 才會包含在傳回的字串中。separator is included in the returned string only if values has more than one element.

values
IEnumerable<T>

包含要串連之物件的集合。A collection that contains the objects to concatenate.

傳回

String

字串,由 values 的項目組成,且每個項目之間都會以 separator 字串分隔。A string that consists of the elements of values delimited by the separator string.

-或--or-

Empty 如果沒有 values 元素,則為。Empty if values has no elements.

屬性

例外狀況

valuesnullvalues is null.

產生的字串長度會溢出允許長度上限 (MaxValue)。The length of the resulting string overflows the maximum allowed length (MaxValue).

範例

下列範例會使用 Eratosthenes 演算法的 Sieve 來計算小於或等於100的質數。The following example uses the Sieve of Eratosthenes algorithm to calculate the prime numbers that are less than or equal to 100. 它會將結果指派給 List<T> integer 類型的物件,然後傳遞給 Join<T>(String, IEnumerable<T>) 方法。It assigns the result to a List<T> object of type integer, which it then passes to the Join<T>(String, IEnumerable<T>) method.

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.EmptyIf separator is null, an empty string (String.Empty) is used instead. 如果的任何成員 valuesnull ,則會改用空字串。If any member of values is null, an empty string is used instead.

Join<T>(String, IEnumerable<T>) 是便利的方法,可讓您串連集合的每個成員, IEnumerable<T> 而不需要先將它們轉換成字串。Join<T>(String, IEnumerable<T>) is a convenience method that lets you concatenate each member of an IEnumerable<T> collection without first converting them to strings. 集合中每個物件的字串表示 IEnumerable<T> 都是藉由呼叫該物件的 ToString 方法所衍生。The string representation of each object in the IEnumerable<T> collection is derived by calling that object's ToString method.

這種方法特別適用于 Language-Integrated 查詢 (LINQ) 查詢運算式。This method is particular useful with Language-Integrated Query (LINQ) query expressions. 例如,下列程式碼會定義非常簡單的 Animal 類別,其中包含動物的名稱及其所屬的順序。For example, the following code defines a very simple Animal class that contains the name of an animal and the order to which it belongs. 然後,它會定義 List<T> 包含許多物件的物件 AnimalIt then defines a List<T> object that contains a number of Animal objects. Enumerable.Where會呼叫擴充方法,將 AnimalOrder 屬性等於 "齧齒動物" 的物件解壓縮。The Enumerable.Where extension method is called to extract the Animal objects whose Order property equals "Rodent". 結果會傳遞給 Join<T>(String, IEnumerable<T>) 方法。The result is passed to the Join<T>(String, IEnumerable<T>) method.

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

另請參閱

適用於