Катя обнови решението на 25.10.2015 22:48 (преди над 2 години)
+package main
+
+import (
+ "strings"
+)
+
+func ExtractColumn(logContents string, column uint8) string {
+ var result string = ""
+ var lines []string = strings.Split(strings.TrimRight(logContents, "\n"), "\n")
+ for _, line := range lines {
+ line = strings.Replace(line, " ", "~", 1)
+ var lineElements []string = strings.SplitN(line, " ", 3)
+ lineElements[0] = strings.Replace(lineElements[0], "~", " ", 1)
+ if column >= 0 && int(column) < len(lineElements) {
+ result += lineElements[column] + "\n"
+ }
+ }
+ return result
+}
това със ~
е много оригинално, не съм сигурен че е много go
-шко
забележки:
- написали сме че няма да ви даваме не верни номера на колони
- въпреки че всичките тези Replace-ове навярно ще го направят не значително, принципно можеш да намалиш конкатенацията на стрингове и съответно правенето на нови такива.
- може да махнеш още един ред с именован резултат
-
strings.Split
не се държи така както ти очакваш в някои крайни случаи :)
Благодаря за забележките. Вероятно ще си подобря решението ;) Забелязах, че strings.Split не се държи както очаквах първоначално, но мисля че го взех предвид.