Jak usunąć białe spacje między literami NIE liczbami
Na przykład:
Wkład
I ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000
Wydajność
IESP 010 000 000 000 000 000 001 001 000 000 IESP 000 000
Próbowałem czegoś takiego
gsub("(?<=\b\w)\s(?=\w\b)", "", x,perl=T)
Ale nie udało mi się dotrzeć do wyjścia, na które liczyłem
Odpowiedzi:
3 dla odpowiedzi № 1Musisz użyć
Input <- "I ES P E ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000"
gsub("(?<=[A-Z])\s+(?=[A-Z])", "", Input, perl=TRUE, ignore.case = TRUE)
## gsub("(*UCP)(?<=\p{L})\s+(?=\p{L})", "", Input, perl=TRUE) ## for Unicode
Zobacz R demo online i a regex demo.
UWAGA: The ignore.case = TRUE
sprawi, że wzorzec wzorca jest niewrażliwy, jeśli nie jest oczekiwany, usuń ten argument.
Detale
(?<=[A-Z])
(lub(?<=p{L})
) - litera musi pojawić się natychmiast po lewej stronie bieżącej lokalizacji (bez dodawania jej do meczu)\s+
- 1 lub więcej białych znaków(?=[A-Z])
(lub(?=\p{L})
) - litera musi pojawić się natychmiast po prawej stronie bieżącej lokalizacji (bez dodawania jej do meczu).
6 dla odpowiedzi nr 2
Posługiwać się gsub
aby zastąpić białe znaki " "
z niczym ""
między literami, a następnie wróć zastępczy i litery.
Input <- "I ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000"
gsub("([A-Z]) ([A-Z])", "\1\2", Input)
[1] "IESP 010 000 000 000 000 000 001 001 000 000 IESP 000 000"
Edytuj po @Wiktor Stribiżew komentarz (zastąpiony [A-z]
do [a-zA-Z]
):
Do stosowania w przypadku małych i dużych liter [a-zA-Z]
Input <- "I ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000 aaa ZZZ"
gsub("([a-zA-Z]) ([a-zA-Z])", "\1\2", Input)
[1] "IESP 010 000 000 000 000 000 001 001 000 000 IESP 000 000 aaaZZZ"