문자열을 분할하여 변수에 할당하는 방법
파이썬에서 문자열을 분할하여 변수에 할당할 수 있습니다.
ip, port = '127.0.0.1:5432'.split(':')
하지만 바둑에서는 효과가 없는 것 같습니다.
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
질문:문자열을 분할하고 한 단계로 값을 할당하는 방법은 무엇입니까?
예를 들어, 두 단계.
package main
import (
"fmt"
"strings"
)
func main() {
s := strings.Split("127.0.0.1:5432", ":")
ip, port := s[0], s[1]
fmt.Println(ip, port)
}
출력:
127.0.0.1 5432
예를 들어, 한 단계는,
package main
import (
"fmt"
"net"
)
func main() {
host, port, err := net.SplitHostPort("127.0.0.1:5432")
fmt.Println(host, port, err)
}
출력:
127.0.0.1 5432 <nil>
부터go
유연성이 있어 직접 만들 수 있습니다.python
스타일 분할...
package main
import (
"fmt"
"strings"
"errors"
)
type PyString string
func main() {
var py PyString
py = "127.0.0.1:5432"
ip, port , err := py.Split(":") // Python Style
fmt.Println(ip, port, err)
}
func (py PyString) Split(str string) ( string, string , error ) {
s := strings.Split(string(py), str)
if len(s) < 2 {
return "" , "", errors.New("Minimum match not found")
}
return s[0] , s[1] , nil
}
다음과 같은 필드의 IPv6 주소RemoteAddr
부터http.Request
형식은 "[:1]:53343"입니다.
그렇게net.SplitHostPort
잘 작동합니다.
package main
import (
"fmt"
"net"
)
func main() {
host1, port, err := net.SplitHostPort("127.0.0.1:5432")
fmt.Println(host1, port, err)
host2, port, err := net.SplitHostPort("[::1]:2345")
fmt.Println(host2, port, err)
host3, port, err := net.SplitHostPort("localhost:1234")
fmt.Println(host3, port, err)
}
출력:
127.0.0.1 5432 <nil>
::1 2345 <nil>
localhost 1234 <nil>
package main
import (
"fmt"
"strings"
)
func main() {
strs := strings.Split("127.0.0.1:5432", ":")
ip := strs[0]
port := strs[1]
fmt.Println(ip, port)
}
다음은 문자열에 대한 정의입니다.분할
// Split slices s into all substrings separated by sep and returns a slice of
// the substrings between those separators.
//
// If s does not contain sep and sep is not empty, Split returns a
// slice of length 1 whose only element is s.
//
// If sep is empty, Split splits after each UTF-8 sequence. If both s
// and sep are empty, Split returns an empty slice.
//
// It is equivalent to SplitN with a count of -1.
func Split(s, sep string) []string { return genSplit(s, sep, 0, -1) }
Golang은 (파이썬과 달리) 슬라이스의 암시적 언팩을 지원하지 않기 때문에 이것이 작동하지 않을 것입니다.위에 제시된 예와 같이, 우리는 이 문제를 해결할 필요가 있습니다.
한 쪽 참고 사항:
암시적 언팩은 이동 중인 변수 함수에 대해 발생합니다.
func varParamFunc(params ...int) {
}
varParamFunc(slice1...)
문자열을 분할하는 방법은 여러 가지가 있습니다.
- 임시로 설정하려면 다음과 같이 분할합니다.
_
import net package
host, port, err := net.SplitHostPort("0.0.0.1:8080")
if err != nil {
fmt.Println("Error is splitting : "+err.error());
//do you code here
}
fmt.Println(host, port)
구조를 기준으로 분할:
- 구조체를 만들고 다음과 같이 분할합니다.
_
type ServerDetail struct {
Host string
Port string
err error
}
ServerDetail = net.SplitHostPort("0.0.0.1:8080") //Specific for Host and Port
이제 다음과 같은 코드를 사용합니다.ServerDetail.Host
그리고.ServerDetail.Port
특정 문자열을 분할하지 않으려면 다음과 같이 수행합니다.
type ServerDetail struct {
Host string
Port string
}
ServerDetail = strings.Split([Your_String], ":") // Common split method
사용법은 다음과 같이 사용합니다.ServerDetail.Host
그리고.ServerDetail.Port
.
이상입니다.
즉, 두 개의 다른 변수와 문자열로 분할 반응을 수용하는 것입니다.스플릿()이 하나의 응답만 반환하고 있으며 이는 문자열 배열입니다.단일 변수에 저장한 다음 배열의 인덱스 값을 가져와 문자열 부분을 추출할 수 있습니다.
예:
var hostAndPort string
hostAndPort = "127.0.0.1:8080"
sArray := strings.Split(hostAndPort, ":")
fmt.Println("host : " + sArray[0])
fmt.Println("port : " + sArray[1])
참고로 Go에서 문자열을 분할하면서 구분 기호를 포함할 수 있습니다.사용하려면 다음을 사용strings.SplitAfter
아래의 예와 같이
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Printf("%q\n", strings.SplitAfter("z,o,r,r,o", ","))
}
**In this function you can able to split the function by golang using array of strings**
func SplitCmdArguments(args []string) map[string]string {
m := make(map[string]string)
for _, v := range args {
strs := strings.Split(v, "=")
if len(strs) == 2 {
m[strs[0]] = strs[1]
} else {
log.Println("not proper arguments", strs)
}
}
return m
}
언급URL : https://stackoverflow.com/questions/16551354/how-to-split-a-string-and-assign-it-to-variables
'itsource' 카테고리의 다른 글
Cordova 명령줄 인터페이스를 사용하여 서명된 APK 파일을 만드는 방법은 무엇입니까? (0) | 2023.07.31 |
---|---|
파이썬의 배열 필터? (0) | 2023.07.26 |
SHOW TABLES를 사용하여 뷰가 아닌 테이블만 가져오는 방법은 무엇입니까? (0) | 2023.07.26 |
Spring MVC: @RequestParam과 @ModelAttribute의 차이점을 설명하십시오. (0) | 2023.07.26 |
Python에서 XML 스키마로 검증 (0) | 2023.07.26 |