Index: trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/List.ab
===================================================================
--- trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/List.ab	(revision 526)
+++ trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/List.ab	(revision 531)
@@ -162,10 +162,10 @@
 	*/
 	Override Function ToString() As String
-		Dim object As Object
-		Dim s As String
-		Foreach object In This
-			s += object.ToString() + Ex"\r\n"
+		Dim string As String
+		Dim i As Long
+		For i = 0 To This.Count-2
+			string += This[i].ToString() + Ex"\r\n"
 		Next
-		Return s
+		Return string + This[i].ToString()
 	End Function
 
Index: trunk/ab5.0/ablib/src/Classes/System/IO/Directory.ab
===================================================================
--- trunk/ab5.0/ablib/src/Classes/System/IO/Directory.ab	(revision 526)
+++ trunk/ab5.0/ablib/src/Classes/System/IO/Directory.ab	(revision 531)
@@ -185,6 +185,6 @@
 	@return ファイルやディレクトリのパス文字列が列挙された配列
 	*/
-	Static Function GetFileSystemEnties(path As String) As List<String>
-		Return GetFileSystemEnties(path, "?*")
+	Static Function GetFileSystemEntries(path As String) As List<String>
+		Return GetFileSystemEntries(path, "?*")
 	End Function
 
@@ -195,5 +195,5 @@
 	@return ファイルやディレクトリのパス文字列が列挙された配列
 	*/
-	Static Function GetFileSystemEnties(path As String, searchPattern As String) As List<String>
+	Static Function GetFileSystemEntries(path As String, searchPattern As String) As List<String>
 		Dim info = New DirectoryInfo(path)
 		Dim infos = info.GetFileSystemInfos(searchPattern) As List<FileSystemInfo>
Index: trunk/ab5.0/ablib/src/Classes/System/String.ab
===================================================================
--- trunk/ab5.0/ablib/src/Classes/System/String.ab	(revision 526)
+++ trunk/ab5.0/ablib/src/Classes/System/String.ab	(revision 531)
@@ -547,4 +547,58 @@
 		End Function
 
+		Function Split(separator As System.Collections.Generic.List<String>) As System.Collections.Generic.List<String>
+			Return Split(separator, -1, StringSplitOptions.None)
+		End Function
+
+		Function Split(separator As System.Collections.Generic.List<String>, options As StringSplitOptions) As System.Collections.Generic.List<String>
+			Return Split(separator, -1, options)
+		End Function
+
+		Function Split(separator As System.Collections.Generic.List<String>, count As Long, options As StringSplitOptions) As System.Collections.Generic.List<String>
+			Dim split As System.Collections.Generic.List<String>
+			Dim index As Long, t1Index As Long, t2Index As Long
+			Dim s As String, substring As String
+			Dim flag As Boolean
+
+			Do
+				t1Index = Length
+				flag = True
+				Foreach s In separator
+					t2Index = IndexOf(s, index)
+					If t2Index > -1 Then
+						t1Index = Math.Min(t1Index, t2Index)
+						flag = False
+					End If
+				Next
+
+				substring = Substring(index, t1Index - index)
+				If Not ( IsNullOrEmpty(substring) and (options = StringSplitOptions.RemoveEmptyEntries) ) Then
+					split.Add(substring)
+				End If
+
+				If flag Then Return split
+				If split.Count = count Then Return split
+				
+				index = t1Index + 1
+			Loop
+		End Function
+
+		Static Function Join(separator As String, strings As System.Collections.Generic.List<String>) As String
+			Return Join(separator, strings, 0, strings.Count)
+		End Function
+
+		Static Function Join(separator As String, strings As System.Collections.Generic.List<String>, startIndex As Long, count As Long) As String
+			If (startIndex+count > strings.Count) or (startIndex < 0) or (count < 1) Then
+				Throw New ArgumentOutOfRangeException("String.Join: One or more arguments are out of range value.", "startIndex or count")
+			End If
+
+			Dim string As String
+			Dim i As Long
+			For i = startIndex To startIndex + count - 2
+				string += strings[i] + separator
+			Next
+			Return string + strings[i]
+		End Function
+
 		Const Function ToLower() As String
 			Dim sb = New Text.StringBuilder(m_Length)
@@ -669,3 +723,8 @@
 	End Class
 
+	Enum StringSplitOptions
+		None
+		RemoveEmptyEntries
+	End Enum
+
 End Namespace
