R字符串处理2

1 、连接字符串:str_c()

str_c(..., sep = "", collapse = NULL)

sep:连接两个字符之间插入的符号
collapse:连接后,使用哪个字符分割

示例

> str_c("Letter: ", letters)
 [1] "Letter: a" "Letter: b" "Letter: c" "Letter: d" "Letter: e" "Letter: f" "Letter: g" "Letter: h"
 [9] "Letter: i" "Letter: j" "Letter: k" "Letter: l" "Letter: m" "Letter: n" "Letter: o" "Letter: p"
[17] "Letter: q" "Letter: r" "Letter: s" "Letter: t" "Letter: u" "Letter: v" "Letter: w" "Letter: x"
[25] "Letter: y" "Letter: z"

> str_c("Letter", letters, sep = ": ")
 [1] "Letter: a" "Letter: b" "Letter: c" "Letter: d" "Letter: e" "Letter: f" "Letter: g" "Letter: h"
 [9] "Letter: i" "Letter: j" "Letter: k" "Letter: l" "Letter: m" "Letter: n" "Letter: o" "Letter: p"
[17] "Letter: q" "Letter: r" "Letter: s" "Letter: t" "Letter: u" "Letter: v" "Letter: w" "Letter: x"
[25] "Letter: y" "Letter: z"

> str_c(letters, " is for", "...")
 [1] "a is for..." "b is for..." "c is for..." "d is for..." "e is for..." "f is for..." "g is for..."
 [8] "h is for..." "i is for..." "j is for..." "k is for..." "l is for..." "m is for..." "n is for..."
[15] "o is for..." "p is for..." "q is for..." "r is for..." "s is for..." "t is for..." "u is for..."
[22] "v is for..." "w is for..." "x is for..." "y is for..." "z is for..."

> str_c(letters[-26], " comes before ", letters[-1])
 [1] "a comes before b" "b comes before c" "c comes before d" "d comes before e" "e comes before f"
 [6] "f comes before g" "g comes before h" "h comes before i" "i comes before j" "j comes before k"
[11] "k comes before l" "l comes before m" "m comes before n" "n comes before o" "o comes before p"
[16] "p comes before q" "q comes before r" "r comes before s" "s comes before t" "t comes before u"
[21] "u comes before v" "v comes before w" "w comes before x" "x comes before y" "y comes before z"
> str_c(letters, collapse = "")
[1] "abcdefghijklmnopqrstuvwxyz"

> str_c(letters, collapse = ", ")
[1] "a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z"

> str_c(c("a", NA, "b"), "-d")
[1] "a-d"  "NA-d" "b-d"

2 、字符串计数:str_count()

str_count(string, pattern = "")

string:字符串
pattern:对哪个字符进行计数

示例

> fruit <- c("apple", "banana", "pear", "pineapple")
> str_count(fruit, "a")
[1] 1 3 1 1
> str_count(fruit, "p")
[1] 2 0 1 3
> str_count(fruit, "e")
[1] 1 0 1 2
> str_count(fruit, c("a", "b", "p", "p"))
[1] 1 1 1 3
> str_count(c("a.", "...", ".a.a"), ".")
[1] 2 3 4
> str_count(c("a.", "...", ".a.a"), fixed("."))
[1] 1 3 2

3 、字符串逻辑判断:str_detect()

str_detect(string, pattern = "")

string:字符串
pattern:对哪个字符进行逻辑判断

示例

> fruit <- c("apple", "banana", "pear", "pinapple")
> str_detect(fruit, "a")
[1] TRUE TRUE TRUE TRUE
> str_detect(fruit, "^a")
[1]  TRUE FALSE FALSE FALSE
> str_detect(fruit, "a$")
[1] FALSE  TRUE FALSE FALSE
> str_detect(fruit, "b")
[1] FALSE  TRUE FALSE FALSE
> str_detect(fruit, "[aeiou]")
[1] TRUE TRUE TRUE TRUE
> # Also vectorised over pattern
> str_detect("aecfg", letters)
 [1]  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[17] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

4 、复制字符串:str_dup()

str_dup(string, times)

string:字符串
times:复制的次数

示例

> fruit <- c("apple", "pear", "banana")
> str_dup(fruit, 2)
[1] "appleapple"   "pearpear"     "bananabanana"
> str_dup(fruit, 1:3)
[1] "apple"              "pearpear"           "bananabananabanana"
> str_c("ba", str_dup("na", 0:5))
[1] "ba"           "bana"         "banana"       "bananana"     "banananana"   "bananananana"

5 、从字符串中提取匹配字符:str_extract()

str_extract(string, pattern)
str_extract_all(string, pattern, simplify = FALSE)

string:字符串
pattern:匹配的字符,默认正则和非正则

示例


> shopping_list <- c("apples x4", "bag of flour", "bag of sugar", "milk x2")
> str_extract(shopping_list, "\\d")
[1] "4" NA  NA  "2"
> str_extract(shopping_list, "[a-z]+")
[1] "apples" "bag"    "bag"    "milk"  
> str_extract(shopping_list, "[a-z]{1,4}")
[1] "appl" "bag"  "bag"  "milk"
> str_extract(shopping_list, "\\b[a-z]{1,4}\\b")
[1] NA     "bag"  "bag"  "milk"
> str_extract_all(shopping_list, "[a-z]+")
[[1]]
[1] "apples" "x"     

[[2]]
[1] "bag"   "of"    "flour"

[[3]]
[1] "bag"   "of"    "sugar"

[[4]]
[1] "milk" "x"   

> str_extract_all(shopping_list, "\\b[a-z]+\\b")
[[1]]
[1] "apples"

[[2]]
[1] "bag"   "of"    "flour"

[[3]]
[1] "bag"   "of"    "sugar"

[[4]]
[1] "milk"

> str_extract_all(shopping_list, "\\d")
[[1]]
[1] "4"

[[2]]
character(0)

[[3]]
character(0)

[[4]]
[1] "2"

6 、字符串的长度:str_length()

str_length(string))

string:字符串

示例


> str_length(letters)
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
> str_length(NA)
[1] NA
> str_length(factor("abc"))
[1] 3
> str_length(c("i", "like", "programming", NA))
[1]  1  4 11 NA
> # Two ways of representing a u with an umlaut
> u1 <- "\u00fc"
> u2 <- stringi::stri_trans_nfd(u1)
> # The print the same:
> u1
[1] "ü"
> u2
[1] "ü"
> # But have a different length
> str_length(u1)
[1] 1
> str_length(u2)
[1] 2

7 、找到匹配的字符串的位置:str_locate()

str_locate(string, pattern)
str_locate_all(string, pattern)

string:字符串
pattern:匹配的字符,默认正则和非正则

示例

> fruit <- c("apple", "banana", "pear", "pineapple")
> str_locate(fruit, "$")
     start end
[1,]     6   5
[2,]     7   6
[3,]     5   4
[4,]    10   9
> str_locate(fruit, "a")
     start end
[1,]     1   1
[2,]     2   2
[3,]     3   3
[4,]     5   5
> str_locate(fruit, "e")
     start end
[1,]     5   5
[2,]    NA  NA
[3,]     2   2
[4,]     4   4
> str_locate(fruit, c("a", "b", "p", "p"))
     start end
[1,]     1   1
[2,]     1   1
[3,]     1   1
[4,]     1   1
> str_locate_all(fruit, "a")
[[1]]
     start end
[1,]     1   1

[[2]]
     start end
[1,]     2   2
[2,]     4   4
[3,]     6   6

[[3]]
     start end
[1,]     3   3

[[4]]
     start end
[1,]     5   5

> str_locate_all(fruit, "e")
[[1]]
     start end
[1,]     5   5

[[2]]
     start end

[[3]]
     start end
[1,]     2   2

[[4]]
     start end
[1,]     4   4
[2,]     9   9

> str_locate_all(fruit, "")
[[1]]
     start end
[1,]     1   0
[2,]     2   1
[3,]     3   2
[4,]     4   3
[5,]     5   4

[[2]]
     start end
[1,]     1   0
[2,]     2   1
[3,]     3   2
[4,]     4   3
[5,]     5   4
[6,]     6   5

[[3]]
     start end
[1,]     1   0
[2,]     2   1
[3,]     3   2
[4,]     4   3

[[4]]
      start end
 [1,]     1   0
 [2,]     2   1
 [3,]     3   2
 [4,]     4   3
 [5,]     5   4
 [6,]     6   5
 [7,]     7   6
 [8,]     8   7
 [9,]     9   8

8 、从字符串中提取匹配组:str_match()

str_match(string, pattern)
str_match_all(string, pattern)

string:字符串
pattern:匹配的字符,默认正则和非正则

示例


> strings <- c(" 219 733 8965", "329-293-8753 ", "banana", "595 794 7569",
+ "387 287 6718", "apple", "233.398.9187 ", "482 952 3315",
+ "239 923 8115 and 842 566 4692", "Work: 579-499-7527", "$1000",
+ "Home: 543.355.3679")
> phone <- "([2-9][0-9]{2})[- .]([0-9]{3})[- .]([0-9]{4})"
> str_extract(strings, phone)
 [1] "219 733 8965" "329-293-8753" NA             "595 794 7569" "387 287 6718" NA            
 [7] "233.398.9187" "482 952 3315" "239 923 8115" "579-499-7527" NA             "543.355.3679"
> str_match(strings, phone)
      [,1]           [,2]  [,3]  [,4]  
 [1,] "219 733 8965" "219" "733" "8965"
 [2,] "329-293-8753" "329" "293" "8753"
 [3,] NA             NA    NA    NA    
 [4,] "595 794 7569" "595" "794" "7569"
 [5,] "387 287 6718" "387" "287" "6718"
 [6,] NA             NA    NA    NA    
 [7,] "233.398.9187" "233" "398" "9187"
 [8,] "482 952 3315" "482" "952" "3315"
 [9,] "239 923 8115" "239" "923" "8115"
[10,] "579-499-7527" "579" "499" "7527"
[11,] NA             NA    NA    NA    
[12,] "543.355.3679" "543" "355" "3679"
> str_extract_all(strings, phone)
[[1]]
[1] "219 733 8965"

[[2]]
[1] "329-293-8753"

[[3]]
character(0)

[[4]]
[1] "595 794 7569"

[[5]]
[1] "387 287 6718"

[[6]]
character(0)

[[7]]
[1] "233.398.9187"

[[8]]
[1] "482 952 3315"

[[9]]
[1] "239 923 8115" "842 566 4692"

[[10]]
[1] "579-499-7527"

[[11]]
character(0)

[[12]]
[1] "543.355.3679"

> str_match_all(strings, phone)
[[1]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "219 733 8965" "219" "733" "8965"

[[2]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "329-293-8753" "329" "293" "8753"

[[3]]
character(0)

[[4]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "595 794 7569" "595" "794" "7569"

[[5]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "387 287 6718" "387" "287" "6718"

[[6]]
character(0)

[[7]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "233.398.9187" "233" "398" "9187"

[[8]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "482 952 3315" "482" "952" "3315"

[[9]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "239 923 8115" "239" "923" "8115"
[2,] "842 566 4692" "842" "566" "4692"

[[10]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "579-499-7527" "579" "499" "7527"

[[11]]
character(0)

[[12]]
     [,1]           [,2]  [,3]  [,4]  
[1,] "543.355.3679" "543" "355" "3679"

> x <- c("<a> <b>", "<a> <>", "<a>", "", NA)
> str_match(x, "<(.*?)> <(.*?)>")
     [,1]      [,2] [,3]
[1,] "<a> <b>" "a"  "b" 
[2,] "<a> <>"  "a"  ""  
[3,] NA        NA   NA  
[4,] NA        NA   NA  
[5,] NA        NA   NA  
> str_match_all(x, "<(.*?)>")
[[1]]
     [,1]  [,2]
[1,] "<a>" "a" 
[2,] "<b>" "b" 

[[2]]
     [,1]  [,2]
[1,] "<a>" "a" 
[2,] "<>"  ""  

[[3]]
     [,1]  [,2]
[1,] "<a>" "a" 

[[4]]
character(0)

[[5]]
character(0)

> str_extract(x, "<.*?>")
[1] "<a>" "<a>" "<a>" NA    NA   
> str_extract_all(x, "<.*?>")
[[1]]
[1] "<a>" "<b>"

[[2]]
[1] "<a>" "<>" 

[[3]]
[1] "<a>"

[[4]]
character(0)

[[5]]
character(0)

9 、字符串增加空字符:str_pad()

str_pad(string, width, side = c("left", "right", "both"), pad = " ")

string:字符向量
decreasing:宽度
side:左边,右边,还是两边增加空格

示例

> str_pad("conan", 20, "left")
[1] "               conan"
> # 从右边补充空格,直到字符串长度为20
> str_pad("conan", 20, "right")
[1] "conan               "
> # 从左右两边各补充空格,直到字符串长度为20
> str_pad("conan", 20, "both")
[1] "       conan        "
> # 从左右两边各补充x字符,直到字符串长度为20
> str_pad("conan", 20, "both",'x')
[1] "xxxxxxxconanxxxxxxxx"

10 、替换字符串:str_replace()

str_replace(string, pattern, replacement)
str_replace_all(string, pattern, replacement)

string:字符向量
pattern:匹配的字符,默认正则和非正则

示例

> fruits <- c("one apple", "two pears", "three bananas")
> str_replace(fruits, "[aeiou]", "-")
[1] "-ne apple"     "tw- pears"     "thr-e bananas"
> str_replace_all(fruits, "[aeiou]", "-")
[1] "-n- -ppl-"     "tw- p--rs"     "thr-- b-n-n-s"
> str_replace(fruits, "([aeiou])", "")
[1] "ne apple"     "tw pears"     "thre bananas"
> str_replace(fruits, "([aeiou])", "\\1\\1")
[1] "oone apple"     "twoo pears"     "threee bananas"
> str_replace(fruits, "[aeiou]", c("1", "2", "3"))
[1] "1ne apple"     "tw2 pears"     "thr3e bananas"
> str_replace(fruits, c("a", "e", "i"), "-")
[1] "one -pple"     "two p-ars"     "three bananas"
> fruits <- c("one apple", "two pears", "three bananas")
> str_replace(fruits, "[aeiou]", "-")
[1] "-ne apple"     "tw- pears"     "thr-e bananas"
> str_replace_all(fruits, "[aeiou]", "-")
[1] "-n- -ppl-"     "tw- p--rs"     "thr-- b-n-n-s"
> str_replace_all(fruits, "([aeiou])", "")
[1] "n ppl"    "tw prs"   "thr bnns"
> str_replace_all(fruits, "([aeiou])", "\\1\\1")
[1] "oonee aapplee"      "twoo peeaars"       "threeee baanaanaas"
> str_replace_all(fruits, "[aeiou]", c("1", "2", "3"))
[1] "1n1 1ppl1"     "tw2 p22rs"     "thr33 b3n3n3s"
> str_replace_all(fruits, c("a", "e", "i"), "-")
[1] "one -pple"     "two p-ars"     "three bananas"

11 、分割字符串:str_split()

str_split(string, pattern, n = Inf, simplify = FALSE)
str_split_fixed(string, pattern, n)

string:字符向量
pattern:匹配的字符,默认正则和非正则
simplify: 如何值为FALSE返回字符串向量,如何值为FALSE返回字符串矩阵

示例

> fruits <- c(
+ "apples and oranges and pears and bananas",
+ "pineapples and mangos and guavas"
+ )
> str_split(fruits, " and ")
[[1]]
[1] "apples"  "oranges" "pears"   "bananas"

[[2]]
[1] "pineapples" "mangos"     "guavas"

> str_split(fruits, " and ", n = 3)
[[1]]
[1] "apples"            "oranges"           "pears and bananas"

[[2]]
[1] "pineapples" "mangos"     "guavas"    

> str_split(fruits, " and ", n = 2)
[[1]]
[1] "apples"                        "oranges and pears and bananas"

[[2]]
[1] "pineapples"        "mangos and guavas"

> # If n greater than number of pieces, no padding occurs
> str_split(fruits, " and ", n = 5)
[[1]]
[1] "apples"  "oranges" "pears"   "bananas"

[[2]]
[1] "pineapples" "mangos"     "guavas"    

> # Use fixed to return a character matrix
> str_split_fixed(fruits, " and ", 3)
     [,1]         [,2]      [,3]               
[1,] "apples"     "oranges" "pears and bananas"
[2,] "pineapples" "mangos"  "guavas"           
> str_split_fixed(fruits, " and ", 4)
     [,1]         [,2]      [,3]     [,4]     
[1,] "apples"     "oranges" "pears"  "bananas"
[2,] "pineapples" "mangos"  "guavas" ""       

12 、截取字符串:str_sub()

str_sub(string, start = 1L, end = -1L)
str_sub(string, start = 1L, end = -1L) <- value

string:字符向量
start:开始位置
end: 结束位置

示例

> hw <- "Hadley Wickham"
> str_sub(hw, 1, 6)
[1] "Hadley"

> str_sub(hw, end = 6)
[1] "Hadley"

> str_sub(hw, 8, 14)
[1] "Wickham"

> str_sub(hw, 8)
[1] "Wickham"

> str_sub(hw, c(1, 8), c(6, 14))
[1] "Hadley"  "Wickham"

> str_sub(hw, -1)
[1] "m"

> str_sub(hw, -7)
[1] "Wickham"

> str_sub(hw, end = -7)
[1] "Hadley W"

> # Alternatively, you can pass in a two colum matrix, as in the
> # output from str_locate_all
> pos <- str_locate_all(hw, "[aeio]")[[1]]
> str_sub(hw, pos)
[1] "adley Wickham" "ey Wickham"    "ickham"        "am"            "adley Wickham" "ey Wickham"   
[7] "ickham"        "am"       

> str_sub(hw, pos[, 1], pos[, 2])
[1] "a" "e" "i" "a"
> # Vectorisation

> str_sub(hw, seq_len(str_length(hw)))
 [1] "Hadley Wickham" "adley Wickham"  "dley Wickham"   "ley Wickham"    "ey Wickham"    
 [6] "y Wickham"      " Wickham"       "Wickham"        "ickham"         "ckham"         
[11] "kham"           "ham"            "am"             "m"       

> str_sub(hw, end = seq_len(str_length(hw)))
 [1] "H"              "Ha"             "Had"            "Hadl"           "Hadle"         
 [6] "Hadley"         "Hadley "        "Hadley W"       "Hadley Wi"      "Hadley Wic"    
[11] "Hadley Wick"    "Hadley Wickh"   "Hadley Wickha"  "Hadley Wickham"

> # Replacement form
> x <- "BBCDEF"
> str_sub(x, 1, 1) <- "A"; x
[1] "ABCDEF"

> str_sub(x, -1, -1) <- "K"; x
[1] "ABCDEK"

> str_sub(x, -2, -2) <- "GHIJ"; x
[1] "ABCDGHIJK"

> str_sub(x, 2, -2) <- ""; x
[1] "AK"

13 、删除空字符串:str_trim()

str_trim(string, side = c("both", "left", "right"))

string:字符向量
side:删除左边,右边,两边的空字符

示例

> str_trim(" String with trailing and leading white space\t")
[1] "String with trailing and leading white space"

> str_trim("\n\nString with trailing and leading white space\n\n")
[1] "String with trailing and leading white space"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台...
    果果哥哥BBQ阅读 5,690评论 0 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 转自: JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 温馨提示:文章很长...
    前端渣渣阅读 1,740评论 1 32
  • 这两天主要了解了 React Native 的基本使用,以及和原生代码混编的方式,最后写了一个 demo ,主要实...
    以德扶人阅读 1,491评论 0 51
  • △关于黑天鹅的读书笔记: 第一部分 极端斯坦与黑天鹅现象 (1)证实谬误:只关注从已观察到的事物中预先挑选出来的部...
    莹姐姐ying阅读 1,275评论 1 4