Given a list of strings:
data = {
"2894;Hot Pink;53:09:44;1449714",
"17456;Dark Cyan;19:06:42;6929227",
"5147;Lime;54:11:55;5247632"
}
(Words are separated by ";"
, the number of words in strings are equal. Number of characters in strings are unequal. Number of characterss in words are unequal.)
How to extract the $m^{th}$ through $n^{th}$ words, so that e.g. $m=2, n=3$ should return:
{
"Hot Pink;53:09:44",
"Dark Cyan;19:06:42",
"Lime;54:11:55"
}
UPDATE
Final solution was found for the task.
I like to share it here.
inlist = RandomChoice[
{"7270;Deep Pink;04:14:55;0027354",
"2871;Dark Orchid;54:21:23;1182263",
"4021;Silver;04:00:58;6940040",
"3521;Dark Slate Gray;18:42:43;5828275"},
400000];
delim = ";";
fromWord = 2;
numberOfWords = 2;
from = 2 fromWord - 1;
to = 2 (fromWord + numberOfWords - 1) - 1;
outlist = List /@ StringJoin /@
StringSplit[inlist, delim -> delim][[All, from ;; to]]; // Timing
{0.92, Null}
The honor goes to the very concerned in this task. Every detail of their conception was vital to the solution. Keep'n rocking.