문자열의 첫 번째 문자 가져오기 및 제거
저는 각 문자에 다른 값을 할당하여 문자열을 사용하여 2차원 보행을 하고 싶습니다.저는 문자열의 첫 번째 문자를 '팝'해서 사용하고 나머지 문자열에 대해 반복할 계획이었습니다.
어떻게 하면 이런 것을 이룰 수 있을까요?
x <- 'hello stackoverflow'
저는 다음과 같은 일을 할 수 있기를 바랍니다.
a <- x.pop[1]
print(a)
'h'
print(x)
'ello stackoverflow'
참조.
x <- 'hello stackoverflow'
substring(x, 1, 1)
## [1] "h"
substring(x, 2)
## [1] "ello stackoverflow"
아이를 갖는다는 생각은pop
값을 반환하고 저장된 데이터를 업데이트하는 부작용이 있는 방법x
객체 지향 프로그래밍의 개념입니다.그래서 정의하는 것보다pop
문자 벡터에서 작동하는 함수, 우리는 다음을 가진 참조 클래스를 만들 수 있습니다.pop
방법.
PopStringFactory <- setRefClass(
"PopString",
fields = list(
x = "character"
),
methods = list(
initialize = function(x)
{
x <<- x
},
pop = function(n = 1)
{
if(nchar(x) == 0)
{
warning("Nothing to pop.")
return("")
}
first <- substring(x, 1, n)
x <<- substring(x, n + 1)
first
}
)
)
x <- PopStringFactory$new("hello stackoverflow")
x
## Reference class object of class "PopString"
## Field "x":
## [1] "hello stackoverflow"
replicate(nchar(x$x), x$pop())
## [1] "h" "e" "l" "l" "o" " " "s" "t" "a" "c" "k" "o" "v" "e" "r" "f" "l" "o" "w"
또한 있습니다.str_sub
stringr 패키지에서
x <- 'hello stackoverflow'
str_sub(x, 2) # or
str_sub(x, 2, str_length(x))
[1] "ello stackoverflow"
다음에서 이 기능 사용stringi
꾸러미
> x <- 'hello stackoverflow'
> stri_sub(x,2)
[1] "ello stackoverflow"
substring
확실히 최선이지만, 여기 하나가 있습니다.strsplit
아직 본 적이 없기 때문에 다른 방법입니다.
> x <- 'hello stackoverflow'
> strsplit(x, '')[[1]][1]
## [1] "h"
또는 동등하게
> unlist(strsplit(x, ''))[1]
## [1] "h"
그리고 넌 할 수 있어,paste
끈의 나머지 부분은 다시 합쳐집니다.
> paste0(strsplit(x, '')[[1]][-1], collapse = '')
## [1] "ello stackoverflow"
첫 번째 문자 제거:
x <- 'hello stackoverflow'
substring(x, 2, nchar(x))
아이디어는 2부터 x의 문자 수까지 모든 문자를 선택하는 것입니다.이것은 단어나 구문의 문자 수가 동일하지 않을 때 중요합니다.
첫 번째 문자를 선택하는 것은 이전 답변과 마찬가지로 사소한 것입니다.
substring(x,1,1)
또 다른 대안은 정규 표현식 함수와 함께 하위 표현식 캡처를 사용하는 것입니다.regmatches
그리고.regexec
.
# the original example
x <- 'hello stackoverflow'
# grab the substrings
myStrings <- regmatches(x, regexec('(^.)(.*)', x))
전체 문자열, 첫 번째 문자 및 "팝업된" 결과를 길이 1의 목록으로 반환합니다.
myStrings
[[1]]
[1] "hello stackoverflow" "h" "ello stackoverflow"
와 동등한.list(c(x, substr(x, 1, 1), substr(x, 2, nchar(x))))
즉, 원하는 요소의 수퍼 세트와 전체 문자열을 포함합니다.
추가 중sapply
길이가 1보다 큰 문자 벡터에 대해 이 메서드가 작동할 수 있습니다.
# a slightly more interesting example
xx <- c('hello stackoverflow', 'right back', 'at yah')
# grab the substrings
myStrings <- regmatches(x, regexec('(^.)(.*)', xx))
이렇게 하면 일치하는 전체 문자열이 첫 번째 요소로 사용되고 일치하는 하위 표현식이 캡처된 목록이 반환됩니다.()
다음과 같은 요소로그래서 정규 표현으로.'(^.)(.*)'
,(^.)
첫 번째 문자와 일치합니다.(.*)
나머지 문자와 일치합니다.
myStrings
[[1]]
[1] "hello stackoverflow" "h" "ello stackoverflow"
[[2]]
[1] "right back" "r" "ight back"
[[3]]
[1] "at yah" "a" "t yah"
이제, 우리는 신뢰할 수 있는 사람들을sapply
+[
원하는 서브스트링을 꺼내는 방법.
myFirstStrings <- sapply(myStrings, "[", 2)
myFirstStrings
[1] "h" "r" "a"
mySecondStrings <- sapply(myStrings, "[", 3)
mySecondStrings
[1] "ello stackoverflow" "ight back" "t yah"
하위 기능을 사용하는 다른 방법.
sub('(^.).*', '\\1', 'hello stackoverflow')
[1] "h"
sub('(^.)(.*)', '\\2', 'hello stackoverflow')
[1] "ello stackoverflow"
언급URL : https://stackoverflow.com/questions/7723549/getting-and-removing-the-first-character-of-a-string
'programing' 카테고리의 다른 글
SQL Server 통합 서비스를 사용하여 Oracle 데이터베이스에 연결 (0) | 2023.07.10 |
---|---|
"Table'dbo"를 해결하려면 어떻게 해야 합니까?Foo'가 이미 존재합니다." 테이블이 존재하지 않을 때 오류가 발생합니까? (0) | 2023.07.10 |
Spring Boot에서 FTP로 파일 보내기 및 받기 (0) | 2023.07.10 |
커밋 범위 git 되돌리기 (0) | 2023.07.10 |
10.4.14 버전에서 mariaDB 버전을 아는 방법 - MariaDB (0) | 2023.07.10 |