2016-06-20 74 views
0

我是go新手,我的數據如下Time Server Type Class Method-Message。在json字段分隔符的幫助下「|」管理有以下數據Time|Server|Type|Class|Method-Message我想分割 - 在第四個索引是|Method-Message然後附加一個字段分隔符「|」然後加入最後以Time|Server|Type|Class|Method|Message。試圖拆分數據與n = s[6 : 6+strings.Index(s[6:], "/")]它所做的是刪除-Message然後結束與Time|Server|Type|Class|Method然後我追加一個字段分隔符,然後結束與Time|Server|Type|Class|Method|Message|但不能追加它是-Message它是從數據中刪除。字符串拆分並加入

回答

6

我不知道爲什麼你正在使用strings.Index(s[6:], "/")時,有你的原始字符串沒有/性格,但你可以在幾個方面更換-字符:

與原有分裂的企圖和參加兩次:

msg := "Time Server Type Class Method-Message" 
msg = strings.Join(strings.Split(msg, " "), "|") 
msg = strings.Join(strings.Split(msg, "-"), "|") 

或略微更有效,只參加一次:

msg := "Time Server Type Class Method-Message" 
parts := strings.Split(msg, " ") 
parts = append(parts[:4], strings.Split(parts[4], "-")...) 
newMsg := strings.Join(parts, "|") 

或具有多個調用strings.Replace

newMsg := strings.Replace(strings.Replace(msg, " ", "|", -1), "-", "|", -1) 

或用一個正則表達式:

newMsg := regexp.MustCompile(`[ -]`).ReplaceAllString(msg, "|") 
+0

JimB感謝這條線上指正'strings.Index(S [6:],「/ 「'Thanks – PlayDave

+0

'strings.Index(s [6:],」 - 「'我用這個方法'parts = append(parts [:4],strings.Split(parts [4],」 - 「)... )',它做了我想要的一切,避免使用Strings.Replace,因爲它將用字符串替換字符串,而字段之間用分隔符分隔|在不是字符串的模式中。謝謝JimB – PlayDave