summaryrefslogtreecommitdiff
path: root/splitNewLines.go
diff options
context:
space:
mode:
Diffstat (limited to 'splitNewLines.go')
-rw-r--r--splitNewLines.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/splitNewLines.go b/splitNewLines.go
new file mode 100644
index 0000000..7ee7442
--- /dev/null
+++ b/splitNewLines.go
@@ -0,0 +1,17 @@
+package shell
+
+import "regexp"
+
+// splits strings. should work all the time
+// A string with mixed line endings, including old Mac style (\r)
+func SplitNewLines(input string) []string {
+ // This regex matches a carriage return and optional newline, OR just a newline.
+ // This covers \r\n, \n, and \r.
+ re := regexp.MustCompile(`\r\n?|\n|\r`)
+
+ // The -1 means there is no limit to the number of splits.
+ lines := re.Split(input, -1)
+
+ // Output: ["line one" "line two" "line three" "line four"]
+ return lines
+}