2016-04-09 6 views
0

У меня есть массив байтов, содержащий вывод вызова Active Directory. Я хочу проанализировать это и извлечь количество дней до истечения срока действия моей учетной записи. Теперь мне интересно: какой лучший способ извлечь 22-4-2016 11:05:26 (так что значение после Password Expires)?Перейти, извлечь дни из байтового массива

[]byte(`The request will be processed at a domain controller for domain local.nl.bol.com. 

User name     bla 
Full Name     bla bla 
Comment 
User's comment 
Country code     (null) 
Account active    Yes 
Account expires    Never 

Password last set   13-3-2016 11:05:26 
Password expires    22-4-2016 11:05:26 
Password changeable   13-3-2016 11:05:26 
Password required   Yes 
User may change password  Yes 

Workstations allowed   All 
Logon script     bla.bat 
User profile 
Home directory 
Last logon     31-3-2016 7:59:29 

Logon hours allowed   All 

The command completed successfully.`) 

ответ

1

Использование strings.TrimSpace, strings.Index и со ссылкой на соответствующие StackOverflow ответы, я получил рабочий раствор и, пожалуйста, найти рабочий код ниже: -

package main 

import (
    "fmt" 
    "strings" 
) 

func CToGoString(c []byte) string { 
    n := -1 
    for i, b := range c { 
     if b == 0 { 
      break 
     } 
     n = i 
    } 
    return string(c[:n+1]) 
} 

func main() { 

    s := []byte(`The request will be processed at a domain controller for domain local.nl.bol.com. 

User name     bla 
Full Name     bla bla 
Comment 
User's comment 
Country code     (null) 
Account active    Yes 
Account expires    Never 

Password last set   13-3-2016 11:05:26 
Password expires    22-4-2016 11:05:26 
Password changeable   13-3-2016 11:05:26 
Password required   Yes 
User may change password  Yes 

Workstations allowed   All 
Logon script     bla.bat 
User profile 
Home directory 
Last logon     31-3-2016 7:59:29 

Logon hours allowed   All 

The command completed successfully.`) 

d := CToGoString(s) 
    len := len("Password expires") 
i := strings.Index(d, "Password expires") 
j := strings.Index(d, "Password changeable") 
chars := d[i+len:j] 
fmt.Println(strings.TrimSpace(chars)) 
} 

выложили код игровой площадки: http://play.golang.org/p/t0Xjd04-pi

1

Вы может сделать это, преобразов байт [] в строку, а затем используя пакет строк, чтобы найти и извлечь значение и, наконец, разобрать его со временем. Допустим, чтобы преобразовать строку в то время, которое вы можете использовать с.

package main 

import (
    "fmt" 
    "strings" 
    "time" 
    "log" 
) 

func main() { 
    line := data[strings.Index(data, "Password expires"):strings.Index(data, "Password changeable")] 
    date := strings.TrimSpace(strings.TrimPrefix(line, "Password expires")) 
    fmt.Println(date) 
    pDate, err := time.Parse("02-1-2006 03:04:05", date) 
    if err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(pDate) 
} 

var data = string([]byte(`The request will be processed at a domain controller for domain local.nl.bol.com. 

User name     bla 
Full Name     bla bla 
Comment 
User's comment 
Country code     (null) 
Account active    Yes 
Account expires    Never 

Password last set   13-3-2016 11:05:26 
Password expires    22-4-2016 11:05:26 
Password changeable   13-3-2016 11:05:26 
Password required   Yes 
User may change password  Yes 

Workstations allowed   All 
Logon script     bla.bat 
User profile 
Home directory 
Last logon     31-3-2016 7:59:29 

Logon hours allowed   All 

The command completed successfully.`)) 

На playground.

Смежные вопросы