當希望將與案例無關的字符串變量與已知字符串常量進行比較時,只需要轉換一部分字符。這不是gnuplot中大小寫轉換的一般情況的答案,但可能適用於許多情況。
arg2 = ARG2
# As we want limited comparisons strstrt(」string」, 」key」) can be used....
# Substitute the first occurrence of a character [pat], with another character [repl]
# Can be used to convert an expected word's case, one character at a time
subchr(src, pat, repl) = strstrt(src, pat)?src[*:strstrt(src, pat)-1].repl.src[strstrt(src, pat)+1:*]:src
arg2 = subchr(arg2, "o", "O")
arg2 = subchr(arg2, "h", "H")
arg2 = subchr(arg2, "m", "M")
arg2 = subchr(arg2, "s", "S")
arg2 = subchr(arg2, "d", "D")
arg2 = subchr(arg2, "b", "B")
if (arg2[1:2] eq "DB") {
# In terms of dB
.....
}
else {
if (arg2 eq "OHMS") {
.....
}
}
的解決方案是寫一個gnuplot的字符串功能subchr()它取代一個單一匹配字符,僅當發現(三元?),並把它稱爲用於每個字符的轉換。幸運的是,gnuplot字符串範圍說明符在(0)和之後(stringlength + 1)之前進行索引時表現得很好,對該區域返回null。這使我們能夠在每個角色升級後返回字符串。
這避免了對系統的需求()調用如awk程序等
來源
2017-09-11 10:43:07
mjp
在我的Ubuntu,'awk'是不能夠上/下非ASCII字母。你是否試圖檢查一個字符串是否包含Bash中的子字符串? –
試試['if [[$ {ARG2 ,,} ==「ohms」]];然後 \t echo YES; fi'](https://ideone.com/9FsuTg) –
或'arg2 = system(「$ {ARG2 ,,}」)' –