IT

Go에서 부분 부분 추출

lottoking 2020. 9. 1. 07:42
반응형

Go에서 부분 부분 추출


콘솔에서 전체 줄 (공백 포함)을 읽은 다음 처리합니다. bufio.ReadString을 사용하면 개행 문자가 입력과 읽혀 지 위해 다음 개행 문자를 함께 자르기 코드를 작성했습니다.

input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string

관리자가 수행하는 더 관용적 인 방법이 있습니까? 즉, 하위 노드를 추출 할 때 끝 널 바이트를 처리하는 라이브러리가 이미 있습니까?

(예, go readline-> string 에서 개행 문자없이 행을 읽는 방법이 이미 있는지 알고 싶습니다. 우아한 조작을 더 찾고 있습니다.)


C에서 사용하는 것과는 다른 존재 작업과 낮은 저장 형식으로 혼란스러워 저장 형식으로 혼란스러워합니다.

  • 의 모든 슬라이스는 길이 (바이트)를 저장하므로 이동 len작업 비용에 대해 신경 쓸 필요가 없습니다. 계산할 필요가 없습니다.
  • 문자열은 널 (null)로 끝나지 않으므로 널 바이트를 제거 할 필요가 없으며 이동 1빈 문자열을 추가하여 슬라이싱 후 추가 할 필요가 없습니다 .

마지막 문자 (1 바이트 문자 인 경우)를 클릭하면 다음을 수행하십시오.

inputFmt:=input[:len(input)-1]

이동은 null로 끝나지 않습니다.

s = s[:len(s)-1]

길이가 0 인 입력에 대한 패닉을 피하려는 경우 연산을 자릅니다.

input, _ := src.ReadString('\n')
var inputFmt string
if len(input) > 0 {
    inputFmt = input[:len(input)-1]
}
// Do something with inputFmt


이것은 Go에서 하위 하위를 수행하는 간단한 것입니다.

package main

import "fmt"

var p = fmt.Println

func main() {

  value := "address;bar"

  // Take substring from index 2 to length of string
  substring := value[2:len(value)]
  p(substring)

}

부분적으로를 얻으려면

  1. "sp"의 위치 찾기

  2. 배열 논리로 노드 자르기

https://play.golang.org/p/0Redd_qiZM


경고 : 작동하며 입력 작동 ASCII가 아닌 UTF-8로 인코딩 된 문자 일 때 잘못 계산 시퀀스 중간에 멀티 바이트 문자를 자르기 때문에 손상 문자가 수도 있습니다.

다음은 UTF-8 인식 버전입니다.

func substr(input string, start int, length int) string {
    asRunes := []rune(input)

    if start >= len(asRunes) {
        return ""
    }

    if start+length > len(asRunes) {
        length = len(asRunes) - start
    }

    return string(asRunes[start : start+length])
}

참고 URL : https://stackoverflow.com/questions/12311033/extracting-substrings-in-go

반응형