awk: 문자열에서 문자를 하나씩 추출합니다.

awk: 문자열에서 문자를 하나씩 추출합니다.

문자열의 처음부터 끝까지 문자를 하나씩 추출할 때 누군가는 이렇게 쓰는 경우가 많습니다.

예를 들어:

function rev1(str,    i, ret) {
    for (i = 1; i <= length(str); i++) {
        ret = substr(str, i, 1) ret;
    }
    return ret;
}

length()를 사용할 필요는 없다고 생각합니다.

function rev2(str,    ch, i, ret) {
    while (ch = substr(str, ++i, 1)) {
        ret = ch ret;
    }
    return ret;
}

작동하지만 잘못된 것인가요?

답변1

틀린 것은 아니지만(입력이 실제로 배열이 아니라 문자열이라고 가정할 때) substr()이 문자열을 반환하기 때문에 문자열 비교를 수행하는 조건에 의존하기 때문에 결과 코드가 덜 명확합니다. 얼핏 보면 문자열에 a가 포함되어 있으면 실패할 줄 알았는데, 0강제로 문자열 비교를 하기 때문에 실패하지 않습니다.

관련 정보