簡體   English   中英

提取多個字符串的相同開頭部分

[英]extract the identical beginning parts of multiple strings

我有多個這樣的字符串(所謂的 DOI):

doi1 <- "10.1057/bp.2009.9"
doi2 <- "10.1057/bp.2015.4"
doi3 <- "10.1057/bp.2008.12"

如何最好地提取字符串的共同開頭?

正確的 output 應該是10.1057/bp.20

(我的第一個猜測是使用 same identical() ,但是 function 只能比較兩個完整的字符串)

package ' 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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM