문자열에서 첫 번째 모음을 찾는 방법

문자열에서 첫 번째 모음을 찾는 방법

돼지 라틴어 계산기를 만들려고 하는데 특정 부분에서 멈췄습니다. "apple"이라는 문자열이 있다고 가정해 보겠습니다. 이를 변환하려면 끝에 "way"를 추가하면 "appleway"가 됩니다. 현재 이 부분을 완료했습니다.

내가 붙어있는 것은 "스포츠"라는 문자열과 같은 것입니다. 이를 위해 첫 번째 모음 앞에 자음을 가져다가 끝에 넣고 "ay"를 추가하면 "ortsspay"가 됩니다.

문자열을 올바르게 변환하기 위해 첫 번째 모음 앞에 자음을 얻는 방법을 찾는 데 어려움을 겪고 있습니다.

답변1

매개 bash변수 확장:

${var%%[AaEeIiOoUu]*}
  • 패턴은 [AaEeIiOoUu]*탐욕스럽게( %%) 변수에서 일치하는 부분을 var오른쪽부터 제거합니다. 여기서는 대문자 또는 소문자 모음( )에서 시작하여 아무 것( ) [AaEeIiOoUu]이 뒤따릅니다.*

예:

$ var=sports   
$ echo "${var%%[AaEeIiOoUu]*}"
sp

$ var=foobar
$ echo "${var%%[AaEeIiOoUu]*}"
f

답변2

$ echo "sports" | sed 's/.*\([a-z]\)[aeiouAEIOU].*/\1/'
p

와일드카드가 너무 많습니다.

$ echo "spozzzzzzzzzo" | sed 's/\([a-z]\)[aeiouAEIOU].*/\1/'
sp

@Fiximan, 그건 잘 모르겠습니다.

$ echo "spozzzzzzzzzo" | sed 's/\(b-df-hj-np-tv-z\{1,\}\)[aeiou].*/\1/'
spozzzzzzzzzo

@Sundeep, 네, 그렇군요...

$ echo "spozzzzzzzzzo" | sed 's/\([^aeiou]*\).*/\1/i'
sp

나는 heemayl의 raw bash +1을 선호한다고 말해야합니다. 좋습니다!

관련 정보