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但由于强制进行了字符串比较,所以不会失败。

相关内容