Lua - Get index of last character appearance in a string
I have some strings representing table "paths" that can be used to iterate to a value within a table, such as:
"table.subTable[2].anotherTable"
"table.subTable.otherTable.anotherTable"
"table.subTable.otherTable[3]"
[2] and [3] are indexes which might point to another table. I need to write a function that cuts off the last key/index so that the "string path" points to the previous (or "parent") table.
For example, the above strings should turn into:
"table.subTable[2]"
"table.subTable.otherTable"
"table.subTable.otherTable"
I thought this could be done by finding the last [
or .
characters in the string and splitting it by using string.sub
.
There might be many other ways to achieve this, such as gmatch
, but I'm not sure how. Thank you in advance!
string lua substring
add a comment |
I have some strings representing table "paths" that can be used to iterate to a value within a table, such as:
"table.subTable[2].anotherTable"
"table.subTable.otherTable.anotherTable"
"table.subTable.otherTable[3]"
[2] and [3] are indexes which might point to another table. I need to write a function that cuts off the last key/index so that the "string path" points to the previous (or "parent") table.
For example, the above strings should turn into:
"table.subTable[2]"
"table.subTable.otherTable"
"table.subTable.otherTable"
I thought this could be done by finding the last [
or .
characters in the string and splitting it by using string.sub
.
There might be many other ways to achieve this, such as gmatch
, but I'm not sure how. Thank you in advance!
string lua substring
add a comment |
I have some strings representing table "paths" that can be used to iterate to a value within a table, such as:
"table.subTable[2].anotherTable"
"table.subTable.otherTable.anotherTable"
"table.subTable.otherTable[3]"
[2] and [3] are indexes which might point to another table. I need to write a function that cuts off the last key/index so that the "string path" points to the previous (or "parent") table.
For example, the above strings should turn into:
"table.subTable[2]"
"table.subTable.otherTable"
"table.subTable.otherTable"
I thought this could be done by finding the last [
or .
characters in the string and splitting it by using string.sub
.
There might be many other ways to achieve this, such as gmatch
, but I'm not sure how. Thank you in advance!
string lua substring
I have some strings representing table "paths" that can be used to iterate to a value within a table, such as:
"table.subTable[2].anotherTable"
"table.subTable.otherTable.anotherTable"
"table.subTable.otherTable[3]"
[2] and [3] are indexes which might point to another table. I need to write a function that cuts off the last key/index so that the "string path" points to the previous (or "parent") table.
For example, the above strings should turn into:
"table.subTable[2]"
"table.subTable.otherTable"
"table.subTable.otherTable"
I thought this could be done by finding the last [
or .
characters in the string and splitting it by using string.sub
.
There might be many other ways to achieve this, such as gmatch
, but I'm not sure how. Thank you in advance!
string lua substring
string lua substring
asked Jan 1 at 22:33
MayronMayron
63411126
63411126
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
If .
and [
only occur in indexing syntax in the strings you are working with, you can do path:match('(.+)[.')
. [.
is visually confusing, but it is a set containing .
and [
. You can escape [
with a percent ([.%
), but it isn't necessary.
If one of the table indices is a string that contains .
or [
, like table['sub.table'][3]
, this solution will fail. In that case, the solution would be more complicated. You could use LPeg, or replace .
or [
within strings with some other sequence of characters before doing the string matching and then restore the .
or [
after the string matching.
thanks! The table indices will not contain.
or[
so that will work. Not exactly sure why[[.]
is fine but switching the characters around requires a%
like[.^
.
– Mayron
Jan 1 at 23:17
1
Oh, right, the[
doesn't have to be escaped (though the pattern is visually confusing). I've edited my post.
– cyclaminist
Jan 2 at 0:00
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%2f53999458%2flua-get-index-of-last-character-appearance-in-a-string%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If .
and [
only occur in indexing syntax in the strings you are working with, you can do path:match('(.+)[.')
. [.
is visually confusing, but it is a set containing .
and [
. You can escape [
with a percent ([.%
), but it isn't necessary.
If one of the table indices is a string that contains .
or [
, like table['sub.table'][3]
, this solution will fail. In that case, the solution would be more complicated. You could use LPeg, or replace .
or [
within strings with some other sequence of characters before doing the string matching and then restore the .
or [
after the string matching.
thanks! The table indices will not contain.
or[
so that will work. Not exactly sure why[[.]
is fine but switching the characters around requires a%
like[.^
.
– Mayron
Jan 1 at 23:17
1
Oh, right, the[
doesn't have to be escaped (though the pattern is visually confusing). I've edited my post.
– cyclaminist
Jan 2 at 0:00
add a comment |
If .
and [
only occur in indexing syntax in the strings you are working with, you can do path:match('(.+)[.')
. [.
is visually confusing, but it is a set containing .
and [
. You can escape [
with a percent ([.%
), but it isn't necessary.
If one of the table indices is a string that contains .
or [
, like table['sub.table'][3]
, this solution will fail. In that case, the solution would be more complicated. You could use LPeg, or replace .
or [
within strings with some other sequence of characters before doing the string matching and then restore the .
or [
after the string matching.
thanks! The table indices will not contain.
or[
so that will work. Not exactly sure why[[.]
is fine but switching the characters around requires a%
like[.^
.
– Mayron
Jan 1 at 23:17
1
Oh, right, the[
doesn't have to be escaped (though the pattern is visually confusing). I've edited my post.
– cyclaminist
Jan 2 at 0:00
add a comment |
If .
and [
only occur in indexing syntax in the strings you are working with, you can do path:match('(.+)[.')
. [.
is visually confusing, but it is a set containing .
and [
. You can escape [
with a percent ([.%
), but it isn't necessary.
If one of the table indices is a string that contains .
or [
, like table['sub.table'][3]
, this solution will fail. In that case, the solution would be more complicated. You could use LPeg, or replace .
or [
within strings with some other sequence of characters before doing the string matching and then restore the .
or [
after the string matching.
If .
and [
only occur in indexing syntax in the strings you are working with, you can do path:match('(.+)[.')
. [.
is visually confusing, but it is a set containing .
and [
. You can escape [
with a percent ([.%
), but it isn't necessary.
If one of the table indices is a string that contains .
or [
, like table['sub.table'][3]
, this solution will fail. In that case, the solution would be more complicated. You could use LPeg, or replace .
or [
within strings with some other sequence of characters before doing the string matching and then restore the .
or [
after the string matching.
edited Jan 1 at 23:59
answered Jan 1 at 23:03
cyclaministcyclaminist
9701211
9701211
thanks! The table indices will not contain.
or[
so that will work. Not exactly sure why[[.]
is fine but switching the characters around requires a%
like[.^
.
– Mayron
Jan 1 at 23:17
1
Oh, right, the[
doesn't have to be escaped (though the pattern is visually confusing). I've edited my post.
– cyclaminist
Jan 2 at 0:00
add a comment |
thanks! The table indices will not contain.
or[
so that will work. Not exactly sure why[[.]
is fine but switching the characters around requires a%
like[.^
.
– Mayron
Jan 1 at 23:17
1
Oh, right, the[
doesn't have to be escaped (though the pattern is visually confusing). I've edited my post.
– cyclaminist
Jan 2 at 0:00
thanks! The table indices will not contain
.
or [
so that will work. Not exactly sure why [[.]
is fine but switching the characters around requires a %
like [.^
.– Mayron
Jan 1 at 23:17
thanks! The table indices will not contain
.
or [
so that will work. Not exactly sure why [[.]
is fine but switching the characters around requires a %
like [.^
.– Mayron
Jan 1 at 23:17
1
1
Oh, right, the
[
doesn't have to be escaped (though the pattern is visually confusing). I've edited my post.– cyclaminist
Jan 2 at 0:00
Oh, right, the
[
doesn't have to be escaped (though the pattern is visually confusing). I've edited my post.– cyclaminist
Jan 2 at 0:00
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%2f53999458%2flua-get-index-of-last-character-appearance-in-a-string%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