source

powershell로 문자열을 분할하여 첫 번째 및 마지막 요소 가져오기

manysource 2023. 8. 28. 21:13

powershell로 문자열을 분할하여 첫 번째 및 마지막 요소 가져오기

만약 그렇다면: git description --long.

다음과 같은 정보를 얻을 수 있는 것:0.3.1-15-g3b885c5

위 문자열의 의미는 다음과 같습니다.

태그-커밋 거리-커밋 ID(http://git-scm.com/docs/git-describe)

문자열을 어떻게 분할하여 첫 번째(태그) 요소와 마지막(CommitId) 요소를 가져오시겠습니까?

count 매개 변수와 함께 사용하여 commitid의 대시를 관리합니다.

$x = "0.3.1-15-g3b885c5"
$tag = $x.split("-",3)[0]
$commitid = $x.split("-",3)[-1]

참고: 이 답변은 리처드의 유용한 답변에서 토큰으로- 분할되는 접근 방식을 개선하는 데 중점을 두지만, 그 접근 방식이 완전히 견고하지는 않습니다.git태그 이름 자체에 포함될 수 있습니다.-캐릭터, 그래서 당신은 맹목적으로 첫 번째 것을 추측할 수 없습니다.-instance는 태그 이름을 끝냅니다.
이를 설명하기 위해 Richard의 강력솔루션대신 사용합니다.


좀 더 PowerShell-domatic한 변형을 제공하기 위해:

# Stores '0.3.1' in $tag, and 'g3b885c5' in $commitId
$tag, $commitId = ('0.3.1-15-g3b885c5' -split '-')[0, -1]
  • PowerShell의 연산자는 입력 문자열을 구분 기호로 토큰 배열로 분할하는 데 사용됩니다.-
    그 동안에[string]활자의.Split() 방법은 여기서 충분할 이고, 일반적으로 많은 이점을 제공합니다.

  • [0, -1]첫 번째를 추출)0) 및 마지막(-1) 반환된 배열의 요소-split그리고 이들을 2차원 배열로 반환합니다.

  • $tag, $commitId = 생성된 2차원 배열의 요소를 각각 변수에 할당하는 파괴 다중 구성입니다.

태그에 대시가 허용되는지 여부를 기억할 수 없으므로 대시는 허용되지만 마지막 두 필드에는 표시되지 않습니다.

따라서:

if ("0.3.1-15-g3b885c5" -match '(.*)-\d+-([^-]+)') {
  $tag = $Matches[1];
  $commitId = $Matches[2]
}

언급URL : https://stackoverflow.com/questions/32095674/split-a-string-with-powershell-to-get-the-first-and-last-element