Почему вы не хотите использовать регулярные выражения?Регулярные выражения сильно оптимизированы и будут намного быстрее, чем любой хак, написанный от руки.
Это Java (так как я запускаю Linux и не могу запустить C # в результате), но я надеюсь, что вы поняли идею.
input.replace("view(","").replace("'","").replace("\"","").replace(");","");
Миллион повторений вышеописанного выполняется примерно за 6 секунд на моем компьютере.Принимая во внимание, что приведенное ниже регулярное выражение выполняется примерно за 2 секунды.
// create java's regex matcher object
// matcher is looking for sequences of digits (valid integers)
Matcher matcher = Pattern.compile("(\\d+)").matcher(s);
StringBuilder builder = new StringBuilder();
// whilst we can find matches append the match plus a comma to a string builder
while (matcher.find()) {
builder.append(matcher.group()).append(',');
}
// return the built string less the last trailing comma
return builder.substring(0, builder.length()-1);
Если вы хотите найти действительные десятичные числа и целые числа, используйте вместо этого следующий шаблон.Хотя он работает немного медленнее, чем оригинал.
"(\\d+(\\.\\d*)?)"