字串怎麼比較大小 R怎麼比較兩個字串的差異

2021-10-18 08:02:22 字數 2041 閱讀 9901

假設你有序列aaa和ata,怎麼用r比較它們的差異,即第二個字元,並返回差異的位點與字元?

我用谷歌搜尋這個問題時發現stackoverflow上有類似的提問,但不完全一致,基本就是問找出差異的字元,並沒有我想要的這麼全。提供的解決方案有兩種:

do.call(setdiff, strsplit(c(a, b), split = ""))

# 或者

reduce(setdiff, strsplit(c(a, b), split = ""))

a,b是兩個字串。

> do.call(setdiff, strsplit(c("ata", "aaa"), split = ""))

[1] "t"

> reduce(setdiff, strsplit(c("ata", "aaa"), split = ""))

[1] "t"

神奇的是,如果你將兩個序列呼喚,就不work了!

> reduce(setdiff, strsplit(c("aaa", "ata"), split = ""))

character(0)

> do.call(setdiff, strsplit(c("aaa", "ata"), split = ""))

character(0)

list_string_diff = function(a, b, exclude = c("-", "?"), ignore.case = true, show.excluded = false, only.position = true)

split_seqs = strsplit(c(a, b), split = "")

only.diff = split_seqs[[1]] != split_seqs[[2]]

only.diff[

(split_seqs[[1]] %in% exclude) |

(split_seqs[[2]] %in% exclude)

] = na

diff.info = data.frame(which(is.na(only.diff)|only.diff),

split_seqs[[1]][only.diff], split_seqs[[2]][only.diff])

names(diff.info) = c("position", "seq.a", "seq.b")

if(!show.excluded) diff.info = na.omit(diff.info)

if(only.position)else diff.info

}

這個函式 可以同時記錄位置和原始序列,並可以忽略大小寫,甚至排除一些序列,為了使結果簡化,我新增了只返回位置的預設引數。

python字串比較大小

字串按位比較,兩個字串第一位字元的ascii碼誰大,字串就大,不再比較後面的 第乙個字元相同就比第二個字串,以此類推,需要注意的是空格的ascii碼是32,空 null 的ascii碼是0 ord 函式接受乙個字元 print max 1 2 3 3 print max 31 2 3 31 prin...

Python字串比較大小

字串按位比較,兩個字串第一位字元的ascii碼誰大,字串就大,不再比較後面的 第乙個字元相同就比第二個字串,以此類推,需要注意的是空格的ascii碼是32,空 null 的ascii碼是0,大寫字母和小寫字母的ascii不同 m abc abc bac abc print m 0 m 1 print...

js 字串數值比較大小

寫專案模組中有乙個功能需要限定乙個inputnumber的上限,onchange超過上限,彈出提示資訊 但是遇到乙個奇葩問題,偶爾沒有超過上限也會彈出超出上限的問題 最後排查出來了問題,是因為後台返回的上限是string 1.比較的都是number console 1 2 毫無疑問 false 2....