我有多個這樣的字串(所謂的 DOI):
doi1 <- "10.1057/bp.2009.9"
doi2 <- "10.1057/bp.2015.4"
doi3 <- "10.1057/bp.2008.12"
如何最好地提取字串的共同開頭?
正確的輸出應該是10.1057/bp.20.
(我的第一個猜測是使用identical(),但該函式只能比較兩個完整的字串)
uj5u.com熱心網友回復:
' Biobase ' 包已將其實作為lcPrefix.
但是自己實作這一點并不難。這是另一個快速而骯臟的版本(小心,這僅在少數情況下進行了測驗):
find_longest_prefix = function (strings) {
stopifnot(is.character(strings) && length(strings) > 0L)
for (len in seq_len(nchar(strings[1L]))) {
prefixes = substr(strings, 1L, len)
if (! Reduce(\(prev, p) prev && p == prefixes[1L], prefixes[-1L], TRUE)) {
len = len - 1L
break
}
}
substr(strings[1L], 1L, len)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/410759.html
標籤:
上一篇:字串到十六進制而不更改數字,C
