Самая большая проблема, когда контакт с номерами версий C# является тем, что это не связывается с версией Платформы.NET, которой это, кажется, происходит из-за синхронизируемых выпусков между Visual Studio и Платформой.NET.
версия C# на самом деле связывается с компилятором, не платформой. Например, в Visual Studio 2008 можно записать C# 3.0 и нацелены на Платформу.NET 2.0, 3.0 и 3.5. Номенклатура C# 3.0 описывает версию синтаксиса кода и поддерживавших функций таким же образом, что ANSI C89, C90, C99 описывают синтаксис кода / функции C.
Смотрят на Моно , и Вы будете видеть, что Моно 2.0 (главным образом реализованная версия 2.0 Платформы.NET от спецификаций ECMA) поддерживают синтаксис C# 3.0 и функции.
Если вы углубитесь в String , вы увидите, что он делегирует replaceAll () в Pattern & Matcher и Matcher.replaceAll () использует StringBuilder для хранения в конечном итоге возвращенного значения.
Так что нет, String.replaceAll () не создает более небольшого количества объектов.
вы можете попробовать с StringBuffer / StringBuilder , поскольку они изменяемые CharSequence s:
CharSequence veryBigString = new StringBuilder();
Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement);