2016-03-08 2 views
0

Я делаю простые строки. Нажимайте на дату.strings.Split действующий weird

Формат 2015-10-04

month := strings.Split(date, "-") 

выход [2015 10 03].

Если я month[0] возвращается 2015, но когда я месяц [1], он возвращает

panic: runtime error: index out of range 

Хотя это явно не так. Я использую это неправильно? Любая идея, что происходит?

+0

Что-то выключено с ваша строка, когда я буквально запускаю эту строку и разбиваю ее, я получаю '[2015 10 04]'; –

+1

Вам необходимо предоставить воспроизводимый пример: [Как создать минимальный, полный и проверенный пример.] (Http://stackoverflow.com/help/mcve) – peterSO

ответ

7

Вот полный рабочий пример:

package main 

import "strings" 

func main() { 
    date := "2015-01-02" 
    month := strings.Split(date, "-") 
    println(month[0]) 
    println(month[1]) 
    println(month[2]) 
} 

Выход:

2015 
01 
02 

Playground


Может быть, вы не используете правильный "тире" характер? There are lots:

+-------+--------+----------+ 
| glyph |  codes  | 
+-------+--------+----------+ 
| -  | U+002D | - | 
| ֊  | U+058A | ֊ | 
| ־  | U+05BE | ־ | 
| ᠆  | U+1806 | ᠆ | 
| ‐  | U+2010 | ‐ | 
| ‑  | U+2011 | ‑ | 
| ‒  | U+2012 | ‒ | 
| –  | U+2013 | – | 
| —  | U+2014 | — | 
| ―  | U+2015 | ― | 
| ⁻  | U+207B | ⁻ | 
| ₋  | U+208B | ₋ | 
| −  | U+2212 | − | 
| ﹘  | U+FE58 | ﹘ | 
| ﹣  | U+FE63 | ﹣ | 
| -  | U+FF0D | - | 
+-------+--------+----------+ 

Вот код, с другой входной строкой, также проливает индекс из исключения ограничений:

пакета главного

import "strings" 

func main() { 
    date := "2015‐01‐02" // U+2010 dashes 
    month := strings.Split(date, "-") 
    println(month[0]) 
    println(month[1]) 
    println(month[2]) 
} 

Playground.

+1

Да, я тоже это понял. Он должен указать, что «строка» Mitchell испорчена каким-то образом с недопустимыми байтами или скрытыми символами. –

+0

@Allendar Я согласен. Я добавил в примере с другими чертами Unicode, которые могут быть его проблемой – Tyler

+2

Да, черта не совпала. Никогда бы не подумал об этом, спасибо! –