Add number in the string after each letterWhat is the difference between String and string in C#?How to...
Can I do anything else with aspersions other than cast them?
80-bit collision resistence because of 80-bit x87 registers?
How bad is a Computer Science course that doesn't teach Design Patterns?
Checking if an integer permutation is cyclic in Java
How can I differentiate duration vs starting time
Is it possible to detect 100% of SQLi with a simple regex?
Build ASCII Podiums
Isn't a semicolon (';') needed after a function declaration in C++?
Buying a "Used" Router
Is the tritone (A4 / d5) still banned in Roman Catholic music?
How can changes in personality/values of a person who turned into a vampire be explained?
What does @ mean in a hostname in DNS configuration?
Taking an academic pseudonym?
What happens if both players misunderstand the game state until it's too late?
Why would you use 2 alternate layout buttons instead of 1, when only one can be selected at once
Including proofs of known theorems in master's thesis
Can a Hydra make multiple opportunity attacks at once?
Is there any danger of my neighbor having my wife's signature?
Exploding Numbers
In the Lost in Space intro why was Dr. Smith actor listed as a special guest star?
Why does this quiz question say that protons and electrons do not combine to form neutrons?
What if you do not believe in the project benefits?
Reduce Reflections
Why is it that Bernie Sanders always called a "socialist"?
Add number in the string after each letter
What is the difference between String and string in C#?How to validate an email address using a regular expression?How do I read / convert an InputStream into a String in Java?Case insensitive 'Contains(string)'Convert bytes to a string?How do I make the first letter of a string uppercase in JavaScript?How to replace all occurrences of a string in JavaScriptHow to check whether a string contains a substring in JavaScript?Does Python have a string 'contains' substring method?Why is char[] preferred over String for passwords?
I have several strings with a fixed format.
The format is one letter followed by a number, e.g., A3B1C7D1.
However, if the number behind a letter is 1, the string is written as A3BC7D.
What I want to do is to insert number 1, and convert the string from A3BC7D
to A3B1C7D1
.
My example data is
strings <- c("A", "A3BC3", "A2B1C")
What I want to get is:
strings_new <- c("A1", "A3B1C3", "A2B1C1")
Thanks a lot!
r regex string
add a comment |
I have several strings with a fixed format.
The format is one letter followed by a number, e.g., A3B1C7D1.
However, if the number behind a letter is 1, the string is written as A3BC7D.
What I want to do is to insert number 1, and convert the string from A3BC7D
to A3B1C7D1
.
My example data is
strings <- c("A", "A3BC3", "A2B1C")
What I want to get is:
strings_new <- c("A1", "A3B1C3", "A2B1C1")
Thanks a lot!
r regex string
add a comment |
I have several strings with a fixed format.
The format is one letter followed by a number, e.g., A3B1C7D1.
However, if the number behind a letter is 1, the string is written as A3BC7D.
What I want to do is to insert number 1, and convert the string from A3BC7D
to A3B1C7D1
.
My example data is
strings <- c("A", "A3BC3", "A2B1C")
What I want to get is:
strings_new <- c("A1", "A3B1C3", "A2B1C1")
Thanks a lot!
r regex string
I have several strings with a fixed format.
The format is one letter followed by a number, e.g., A3B1C7D1.
However, if the number behind a letter is 1, the string is written as A3BC7D.
What I want to do is to insert number 1, and convert the string from A3BC7D
to A3B1C7D1
.
My example data is
strings <- c("A", "A3BC3", "A2B1C")
What I want to get is:
strings_new <- c("A1", "A3B1C3", "A2B1C1")
Thanks a lot!
r regex string
r regex string
edited 2 hours ago
markus
13.1k1234
13.1k1234
asked 2 hours ago
DongDong
1466
1466
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
Another option:
gsub("([A-Za-z])(?=[A-Za-z])|([A-Za-z])$", "\1\21", strings, perl = T)
Output:
[1] "A1" "A3B1C3" "A2B1C1"
Or if you only have capitals, just:
gsub("([A-Z])(?=[A-Z])|([A-Z])$", "\1\21", strings, perl = T)
Basically this finds letters that are either followed by another letter or are at the end of string, and replaces them with themselves while at the same time adds the desired number, 1
in this case.
add a comment |
IIUC you could do:
gsub("(\D)(\D|$)", "\11\2", strings)
#[1] "A1" "A3B1C3" "A2B1C1"
We create two capture groups, the first is a signle non-digit (\D)
, the second is either a single non-digit or the end of the string (\D|$)
. Whenever there's a match in a string, this means two letters (non-digits) follow each other without a number in between. Hence, we use the replacement \11\2
to replace it with group1, then a 1, then group2 (which can also be the end of the string).
If I rungsub("(\D)(\D|$)", "\11\2", "AB")
, I gotA1B
– Dong
1 min ago
add a comment |
Find all (uppercase) letters ([A-Z]
) that is not followed by a number and replace it with that string + 1
:
gsub("([A-Z])(?![0-9])", "\11", strings, perl = TRUE)
# [1] "A1" "A3B1C3" "A2B1C1"
add a comment |
strings[!grepl("[0-9]$",strings)]=paste0(strings[!grepl("[0-9]$",strings)],"1")
[1] "A1" "A3BC3" "A2B1C1"
We first grep
all positions that do not end with a number, and paste a 1
to them.
9
Almost. Check the second element it should be"A3B1C3"
– markus
2 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54825764%2fadd-number-in-the-string-after-each-letter%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
Another option:
gsub("([A-Za-z])(?=[A-Za-z])|([A-Za-z])$", "\1\21", strings, perl = T)
Output:
[1] "A1" "A3B1C3" "A2B1C1"
Or if you only have capitals, just:
gsub("([A-Z])(?=[A-Z])|([A-Z])$", "\1\21", strings, perl = T)
Basically this finds letters that are either followed by another letter or are at the end of string, and replaces them with themselves while at the same time adds the desired number, 1
in this case.
add a comment |
Another option:
gsub("([A-Za-z])(?=[A-Za-z])|([A-Za-z])$", "\1\21", strings, perl = T)
Output:
[1] "A1" "A3B1C3" "A2B1C1"
Or if you only have capitals, just:
gsub("([A-Z])(?=[A-Z])|([A-Z])$", "\1\21", strings, perl = T)
Basically this finds letters that are either followed by another letter or are at the end of string, and replaces them with themselves while at the same time adds the desired number, 1
in this case.
add a comment |
Another option:
gsub("([A-Za-z])(?=[A-Za-z])|([A-Za-z])$", "\1\21", strings, perl = T)
Output:
[1] "A1" "A3B1C3" "A2B1C1"
Or if you only have capitals, just:
gsub("([A-Z])(?=[A-Z])|([A-Z])$", "\1\21", strings, perl = T)
Basically this finds letters that are either followed by another letter or are at the end of string, and replaces them with themselves while at the same time adds the desired number, 1
in this case.
Another option:
gsub("([A-Za-z])(?=[A-Za-z])|([A-Za-z])$", "\1\21", strings, perl = T)
Output:
[1] "A1" "A3B1C3" "A2B1C1"
Or if you only have capitals, just:
gsub("([A-Z])(?=[A-Z])|([A-Z])$", "\1\21", strings, perl = T)
Basically this finds letters that are either followed by another letter or are at the end of string, and replaces them with themselves while at the same time adds the desired number, 1
in this case.
edited 2 hours ago
answered 2 hours ago
arg0nautarg0naut
4,1191315
4,1191315
add a comment |
add a comment |
IIUC you could do:
gsub("(\D)(\D|$)", "\11\2", strings)
#[1] "A1" "A3B1C3" "A2B1C1"
We create two capture groups, the first is a signle non-digit (\D)
, the second is either a single non-digit or the end of the string (\D|$)
. Whenever there's a match in a string, this means two letters (non-digits) follow each other without a number in between. Hence, we use the replacement \11\2
to replace it with group1, then a 1, then group2 (which can also be the end of the string).
If I rungsub("(\D)(\D|$)", "\11\2", "AB")
, I gotA1B
– Dong
1 min ago
add a comment |
IIUC you could do:
gsub("(\D)(\D|$)", "\11\2", strings)
#[1] "A1" "A3B1C3" "A2B1C1"
We create two capture groups, the first is a signle non-digit (\D)
, the second is either a single non-digit or the end of the string (\D|$)
. Whenever there's a match in a string, this means two letters (non-digits) follow each other without a number in between. Hence, we use the replacement \11\2
to replace it with group1, then a 1, then group2 (which can also be the end of the string).
If I rungsub("(\D)(\D|$)", "\11\2", "AB")
, I gotA1B
– Dong
1 min ago
add a comment |
IIUC you could do:
gsub("(\D)(\D|$)", "\11\2", strings)
#[1] "A1" "A3B1C3" "A2B1C1"
We create two capture groups, the first is a signle non-digit (\D)
, the second is either a single non-digit or the end of the string (\D|$)
. Whenever there's a match in a string, this means two letters (non-digits) follow each other without a number in between. Hence, we use the replacement \11\2
to replace it with group1, then a 1, then group2 (which can also be the end of the string).
IIUC you could do:
gsub("(\D)(\D|$)", "\11\2", strings)
#[1] "A1" "A3B1C3" "A2B1C1"
We create two capture groups, the first is a signle non-digit (\D)
, the second is either a single non-digit or the end of the string (\D|$)
. Whenever there's a match in a string, this means two letters (non-digits) follow each other without a number in between. Hence, we use the replacement \11\2
to replace it with group1, then a 1, then group2 (which can also be the end of the string).
edited 2 hours ago
answered 2 hours ago
docendo discimusdocendo discimus
51.9k1179117
51.9k1179117
If I rungsub("(\D)(\D|$)", "\11\2", "AB")
, I gotA1B
– Dong
1 min ago
add a comment |
If I rungsub("(\D)(\D|$)", "\11\2", "AB")
, I gotA1B
– Dong
1 min ago
If I run
gsub("(\D)(\D|$)", "\11\2", "AB")
, I got A1B
– Dong
1 min ago
If I run
gsub("(\D)(\D|$)", "\11\2", "AB")
, I got A1B
– Dong
1 min ago
add a comment |
Find all (uppercase) letters ([A-Z]
) that is not followed by a number and replace it with that string + 1
:
gsub("([A-Z])(?![0-9])", "\11", strings, perl = TRUE)
# [1] "A1" "A3B1C3" "A2B1C1"
add a comment |
Find all (uppercase) letters ([A-Z]
) that is not followed by a number and replace it with that string + 1
:
gsub("([A-Z])(?![0-9])", "\11", strings, perl = TRUE)
# [1] "A1" "A3B1C3" "A2B1C1"
add a comment |
Find all (uppercase) letters ([A-Z]
) that is not followed by a number and replace it with that string + 1
:
gsub("([A-Z])(?![0-9])", "\11", strings, perl = TRUE)
# [1] "A1" "A3B1C3" "A2B1C1"
Find all (uppercase) letters ([A-Z]
) that is not followed by a number and replace it with that string + 1
:
gsub("([A-Z])(?![0-9])", "\11", strings, perl = TRUE)
# [1] "A1" "A3B1C3" "A2B1C1"
edited 3 mins ago
answered 28 mins ago
sindri_baldursindri_baldur
7,7941032
7,7941032
add a comment |
add a comment |
strings[!grepl("[0-9]$",strings)]=paste0(strings[!grepl("[0-9]$",strings)],"1")
[1] "A1" "A3BC3" "A2B1C1"
We first grep
all positions that do not end with a number, and paste a 1
to them.
9
Almost. Check the second element it should be"A3B1C3"
– markus
2 hours ago
add a comment |
strings[!grepl("[0-9]$",strings)]=paste0(strings[!grepl("[0-9]$",strings)],"1")
[1] "A1" "A3BC3" "A2B1C1"
We first grep
all positions that do not end with a number, and paste a 1
to them.
9
Almost. Check the second element it should be"A3B1C3"
– markus
2 hours ago
add a comment |
strings[!grepl("[0-9]$",strings)]=paste0(strings[!grepl("[0-9]$",strings)],"1")
[1] "A1" "A3BC3" "A2B1C1"
We first grep
all positions that do not end with a number, and paste a 1
to them.
strings[!grepl("[0-9]$",strings)]=paste0(strings[!grepl("[0-9]$",strings)],"1")
[1] "A1" "A3BC3" "A2B1C1"
We first grep
all positions that do not end with a number, and paste a 1
to them.
answered 2 hours ago
boskiboski
490210
490210
9
Almost. Check the second element it should be"A3B1C3"
– markus
2 hours ago
add a comment |
9
Almost. Check the second element it should be"A3B1C3"
– markus
2 hours ago
9
9
Almost. Check the second element it should be
"A3B1C3"
– markus
2 hours ago
Almost. Check the second element it should be
"A3B1C3"
– markus
2 hours ago
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54825764%2fadd-number-in-the-string-after-each-letter%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown