문자열에있는 문자의 위치를 찾고 싶습니다.문자열의 문자 위치를 찾으십시오.
말 : string = "the2quickbrownfoxeswere2tired"
내가 함수가 4
및 24
를 반환하고 싶습니다 - 2
S의 문자 위치를 string
에.
문자열에있는 문자의 위치를 찾고 싶습니다.문자열의 문자 위치를 찾으십시오.
말 : string = "the2quickbrownfoxeswere2tired"
내가 함수가 4
및 24
를 반환하고 싶습니다 - 2
S의 문자 위치를 string
에.
당신은 사용할 수 있습니다 gregexpr
gregexpr(pattern ='2',"the2quickbrownfoxeswere2tired")
[[1]]
[1] 4 24
attr(,"match.length")
[1] 1 1
attr(,"useBytes")
[1] TRUE
또는 간단하게 사용할 수
library(stringr)
str_locate_all(pattern ='2', "the2quickbrownfoxeswere2tired")
[[1]]
start end
[1,] 4 4
[2,] 24 24
노트 (stringr
버전 1.0 현재) gregexpr
stringi::stri_locate_all
의 래퍼 인 패키지 stringr
에서 아마 str_locate_all
stringi
library(stringi)
stri_locate_all(pattern = '2', "the2quickbrownfoxeswere2tired", fixed = TRUE)
기본 R
의 또 다른 옵션이 작동한다
lapply(strsplit(x, ''), function(x) which(x == '2'))
같은 (주어진 문자 벡터 x
)
첫 번째 3 가지 솔루션에서 반환 한 목록/개체에서 정수를 추출하는 방법은 무엇입니까? –
여기에 또 다른 간단한 대안입니다 것입니다.
> which(strsplit(string, "")[[1]]=="2")
[1] 4 24
당신은 단 4 24 올라가지 사용하여 출력을 할 수 있습니다 :
unlist(gregexpr(pattern ='2',"the2quickbrownfoxeswere2tired"))
[1] 4 24
가 STR1에서 STR2의 n 번째 발생 (오라클 SQL INSTR과 같은 매개 변수의 순서)의 위치를 찾을 수는 0을 반환 찾지 못하면
instr <- function(str1,str2,startpos=1,n=1){
aa=unlist(strsplit(substring(str1,startpos),str2))
if(length(aa) < n+1) return(0);
return(sum(nchar(aa[1:n])) + startpos+(n-1)*nchar(str2))
}
instr('xxabcdefabdddfabx','ab')
[1] 3
instr('xxabcdefabdddfabx','ab',1,3)
[1] 15
instr('xxabcdefabdddfabx','xx',2,1)
[1] 0
정규식을 사용해야하는 이유는 무엇입니까? r에는'.indexOf()'또는 무엇인가가 없습니까? – fge
나는 그것을 의심한다. 개발자는 Nixers 였고 모두가 정규식을 알고 있다고 가정합니다. R의 문자열 처리는 일종의 kludgy입니다. –