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

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

돼지 라틴어 계산기를 만들려고 하는데 특정 부분에서 막히네요. "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의 원래 bash +1을 선호한다고 말해야 합니다. 아주 좋습니다!

관련 정보