Добромир обнови решението на 24.10.2015 01:16 (преди над 2 години)
+package main
+
+import "strings"
+import "bytes"
+import "regexp"
+
+func ExtractColumn(logContents string, column uint8) string {
+ var columnFormats = [...]string{"\\d{2}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}", "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}", "([A-Za-z\\s]+)\\z"}
+ lines := strings.Split(logContents, "\n")
+ var buffer bytes.Buffer
+
+ for _, line := range lines[0 : len(lines)-1] {
+ re := regexp.MustCompile(columnFormats[column])
+ match := strings.TrimSpace(re.FindString(line))
+ buffer.WriteString(match + "\n")
+ }
+
+ return buffer.String()
+}
Интересно решение, но ето няколко забележки:
- не сме ви го преподавали(ще е в следващата лекция) но при синтаксиса lines[a:b] елемента с индекс b не се включва. В твоя случай няма нужда да reslice-ваш изобщо тоест може да е само lines.
- нищо не пречи третата "колона" да има същата/подобна стойност като на първите две.
Препоръчвам ти да си пуснеш тестовете на Таня