[hyena] [StringUtil] Add a Join IEnumerable<string> method



commit b712d518846bfccbbfd92a1ea85ee2d29844a1ff
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Thu Jul 15 14:45:26 2010 -0700

    [StringUtil] Add a Join IEnumerable<string> method
    
    Is an extension method, uses StringBuilder

 Hyena/Hyena/StringUtil.cs            |   15 +++++++++++++++
 Hyena/Hyena/Tests/StringUtilTests.cs |   14 ++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/Hyena/Hyena/StringUtil.cs b/Hyena/Hyena/StringUtil.cs
index 232641e..8075a8c 100644
--- a/Hyena/Hyena/StringUtil.cs
+++ b/Hyena/Hyena/StringUtil.cs
@@ -337,5 +337,20 @@ namespace Hyena
             }
             return s;
         }
+
+        public static string Join (this IEnumerable<string> strings, string sep)
+        {
+            var sb = new StringBuilder ();
+            foreach (var str in strings) {
+                sb.Append (str);
+                sb.Append (sep);
+            }
+
+            if (sb.Length > 0 && sep != null) {
+                sb.Length -= sep.Length;
+            }
+
+            return sb.ToString ();
+        }
     }
 }
diff --git a/Hyena/Hyena/Tests/StringUtilTests.cs b/Hyena/Hyena/Tests/StringUtilTests.cs
index ecf331e..e7c940c 100644
--- a/Hyena/Hyena/Tests/StringUtilTests.cs
+++ b/Hyena/Hyena/Tests/StringUtilTests.cs
@@ -31,6 +31,7 @@
 
 using System;
 using System.IO;
+using System.Linq;
 using NUnit.Framework;
 using Hyena;
 
@@ -145,6 +146,19 @@ bar"));
             Assert.AreEqual ("foobaz foo bar", StringUtil.RemoveHtml (@"foo<a
 href=http://lkjdflkjdflkjj>baz foo< /a> bar"));
         }
+
+        [Test]
+        public void TestJoin ()
+        {
+            var s = new string [] { "foo", "bar" };
+            Assert.AreEqual ("foo, bar", s.Join (", "));
+            Assert.AreEqual ("foobar", s.Join (""));
+            Assert.AreEqual ("foobar", s.Join (null));
+            Assert.AreEqual ("", new string [] {}.Join (", "));
+
+            s = new string [] { "foo", "bar", "baz" };
+            Assert.AreEqual ("foo -- bar -- baz", s.Join (" -- "));
+        }
     }
 
     [TestFixture]



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]