Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод Regex.Replace (String, String)

 

Опубликовано: Октябрь 2016

В указанной входной строке заменяет все строки, соответствующие шаблону регулярного выражения, указанной строкой замены.

Пространство имен:   System.Text.RegularExpressions
Сборка:  System (в System.dll)

public string Replace(
	string input,
	string replacement
)

Параметры

input
Type: System.String

Строка для поиска соответствия.

replacement
Type: System.String

Строка замены.

Возвращаемое значение

Type: System.String

Новая строка, идентичная входной строке, за исключением того что строка замены занимает место каждой соответствующей строки. Если в текущем экземпляре нет соответствия шаблону регулярных выражений, метод возвращает текущий экземпляр без изменений.

Exception Condition
ArgumentNullException

Параметр input или replacement имеет значение null.

RegexMatchTimeoutException

Время ожидания истекло. Дополнительные сведения о времени ожидания см. в разделе "Примечания".

Поиск соответствий начинается в начале input строку. Регулярное выражение – шаблон, определенный конструктором для текущего Regex объекта.

replacement Указывает строку, которая является для замены каждого соответствия в input. replacement может содержать любое сочетание текста и подстановки. Например, шаблон замены a*${test}b вставляет строку «*» следуют подстроку, сопоставленную test захватываемой группе, если таковые имеются, за которым следует строка «b». * Символ не распознается как метасимвол в шаблоне замены.

System_CAPS_noteПримечание

Подстановки – это языковые элементы только регулярных выражений, которые распознаются в шаблонах замены. Все другие регулярного выражения элементов языка, включая escape-последовательности символов, допускаются в только в шаблонах регулярных выражений и не распознаются в шаблонах замены.

RegexMatchTimeoutException Исключение, если время выполнения операции замены превышает интервал времени ожидания, определяемое Regex.Regex(String, RegexOptions, TimeSpan) конструктор. Если вы не установите интервал времени ожидания при вызове конструктора, если исключение операции превышает любое значение времени ожидания, установленных для домена приложения, в котором Regex создается объект. Если время ожидания не определено в Regex вызов конструктора или в свойствах домена приложения, или если значение интервала Regex.InfiniteMatchTimeout, исключение не создается

Поскольку этот метод возвращает input без изменений, если совпадения нет, можно использовать Object.ReferenceEquals метода для определения того, сделал ли метод любой замены входной строкой.

В следующем примере определяется регулярное выражение, \s+, который соответствует один или несколько символов пробела. Строка замены "», заменяется одним пробелом.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "This is   text with   far  too   much   " + 
                     "whitespace.";
      string pattern = "\\s+";
      string replacement = " ";
      Regex rgx = new Regex(pattern);
      string result = rgx.Replace(input, replacement);

      Console.WriteLine("Original String: {0}", input);
      Console.WriteLine("Replacement String: {0}", result);                             
   }
}
// The example displays the following output:
//       Original String: This is   text with   far  too   much   whitespace.
//       Replacement String: This is text with far too much whitespace.

В следующем примере определяется регулярное выражение, (\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?, и шаблон замены $2, который удаляет начальный или конечный символ валюты из числового значения.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern =  @"(\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?";
      string input = "$17.43  €2 16.33  £0.98  0.43   £43   12€  17";
      string replacement = "$2";
      Regex rgx = new Regex(pattern);
      string result = rgx.Replace(input, replacement);

      Console.WriteLine("Original String:    '{0}'", input);
      Console.WriteLine("Replacement String: '{0}'", result);                             
   }
}
// The example displays the following output:
//       Original String:    '$17.43  €2 16.33  £0.98  0.43   £43   12€  17'
//       Replacement String: '17.43  2 16.33  0.98  0.43   43   12  17'

Возможные интерпретации регулярного выражения показаны в следующей таблице.

Шаблон

Описание

\p{Sc}

Совпадает с символом валюты. {Sc} Обозначает любой символ, являющийся членом категории валюты символов Юникода.

\s?

Совпадение с нулем или одним символом пробела.

(\p{Sc}\s?)?

Совпадает с нулем или одним вхождением сочетание символ валюты следует ноль или один символ пробела. Это первая группа записи.

\d+

Совпадение с одной или несколькими десятичными цифрами.

\.?

Совпадение с нулем или одним вхождением точки (используется как символ десятичного разделителя).

((?<=\.)\d+)?

Если период предыдущий символ, соответствует один или несколько десятичных цифр. Этот шаблон может быть установлен как ноль или один раз.

(\d+\.?((?<=\.)\d+)?)

Совпадение с шаблоном один или несколько десятичных цифр, за которым следует необязательная точка и десятичными цифрами. Это вторая группа записи. Вызов Replace(String, String) метод заменяет все совпадения со значением данной группой записи.

(?(1)|\s?\p{Sc})?

Если существует первой захватываемой группы, сопоставьте пустую строку. В противном случае — соответствует ноль или один символ пробела, за которым следует символ валюты.

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 1.1
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: