say have string like
mystring1 = "ababababab"; mystring2 = "abcdabcdabcd"; mystring3 = "abcaabcaabcaabca"; mystring4 = "ababacac"; mystring5 = "aaaaabbbbb";
and need following output
output1 = "5(ab)"; output2 = "3(abcd)"; output3 = "4(abca)"; output4 = "2(ab)2(ac)"; output5 = "5(a)5(b)";
i have been looking @ rle can't figure out how above. code have been using is
public static string encode(string input) { return regex.replace(input, @"(.)\1*", delegate(match m) { return string.concat(m.value.length, "(", m.groups[1].value, ")"); }); }
this works output5 can other outputs regex or should using linq?
the purpose of code display mystring in simple manner can mystring being 1000 characters pattern it.
not worried speed.
here non-regex
way given data provided. i'm not sure of edge cases, right now, trip code up. if so, i'll update accordingly.
string mystring1 = "ababababab"; string mystring2 = "abcdabcdabcd"; string mystring3 = "abcaabcaabcaabca"; string mystring4 = "ababacac"; string mystring5 = "aaaaabbbbb"; countgroupoccurrences(mystring1, "ab"); countgroupoccurrences(mystring2, "abcd"); countgroupoccurrences(mystring3, "abca"); countgroupoccurrences(mystring4, "ab", "ac"); countgroupoccurrences(mystring5, "a", "b");
countgroupoccurrences() looks following:
private static void countgroupoccurrences(string str, params string[] patterns) { string result = string.empty; while (str.length > 0) { foreach (string pattern in patterns) { int count = 0; int index = str.indexof(pattern); while (index > -1) { count++; str = str.remove(index, pattern.length); index = str.indexof(pattern); } result += string.format("{0}({1})", count, pattern); } } console.writeline(result); }
results:
5(ab) 3(abcd) 4(abca) 2(ab)2(ac) 5(a)5(b)
update
this worked regex
private static void countgroupoccurrences(string str, params string[] patterns) { string result = string.empty; foreach (string pattern in patterns) { result += string.format("{0}({1})", regex.matches(str, pattern).count, pattern); } console.writeline(result); }
Comments
Post a Comment