Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Regex.Replace (String, String)

 

Publicado: octubre de 2016

En una cadena de entrada especificada, reemplaza todas las cadenas que coinciden con un patrón de expresión regular por una cadena de reemplazo especificada.

Espacio de nombres:   System.Text.RegularExpressions
Ensamblado:  System (en System.dll)

public string Replace(
	string input,
	string replacement
)

Parámetros

input
Type: System.String

Cadena en la que se va a buscar una coincidencia.

replacement
Type: System.String

La cadena de reemplazo.

Valor devuelto

Type: System.String

Cadena nueva que es idéntica a la cadena de entrada, salvo que la cadena de reemplazo ocupa el lugar de cada cadena coincidente. Si no se encuentran coincidencias del patrón de expresión regular en la instancia actual, el método devuelve la instancia sin modificar.

Exception Condition
ArgumentNullException

El valor de input o replacement es null.

RegexMatchTimeoutException

Se agotó el tiempo de espera. Para más información sobre los tiempos de espera, vea la sección Comentarios.

Comienza la búsqueda de coincidencias al principio de la input cadena. La expresión regular es el modelo definido por el constructor actual Regex objeto.

El replacement parámetro especifica la cadena que se va a reemplazar cada coincidencia en input. replacement puede constar de cualquier combinación de texto literal y sustituciones. Por ejemplo, el patrón de reemplazo a*${test}b inserta la cadena "un *" seguida de la subcadena que coincide con el test captura de grupo, si los hay, seguida por la cadena "b". El * caracteres no se reconocen como un metacarácter dentro de un modelo de reemplazo.

System_CAPS_noteNota

Las sustituciones son los elementos del lenguaje de expresión regular solo se reconocen en un modelo de reemplazo. Todos los demás elementos de lenguaje de expresiones regulares, incluidos escapes de carácter, se permiten en sólo los patrones de expresiones regulares y no se reconocen en modelos de reemplazo.

El RegexMatchTimeoutException excepción se produce si el tiempo de ejecución de la operación de reemplazo supera el intervalo de tiempo de espera especificado por el Regex.Regex(String, RegexOptions, TimeSpan) constructor. Si no establece un intervalo de tiempo de espera al llamar al constructor, la excepción se produce si la operación supera cualquier valor de tiempo de espera establecido para el dominio de aplicación en el que el Regex se crea el objeto. Si no hay tiempo de espera se define en el Regex llamada al constructor o en las propiedades del dominio de aplicación, o si el valor de tiempo de espera es Regex.InfiniteMatchTimeout, se inicia ninguna excepción

Dado que el método devuelve input sin cambios si no hay ninguna coincidencia, puede usar el Object.ReferenceEquals método para determinar si el método ha realizado ningún reemplazo para la cadena de entrada.

En el ejemplo siguiente se define una expresión regular, \s+, que coincide con uno o más caracteres de espacio en blanco. La cadena de reemplazo, "", los reemplaza con un carácter de espacio único.

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.

En el ejemplo siguiente se define una expresión regular, (\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?, y un patrón de reemplazo, $2, que quita una líder o un símbolo de moneda al final de un valor numérico.

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'

La expresión regular se interpreta como se muestra en la tabla siguiente.

Modelo

Descripción

\p{Sc}

Coincide con un símbolo de moneda. {Sc} denota cualquier carácter que sea un miembro de la categoría símbolo Unicode, moneda.

\s?

Busca coincidencias con cero o un carácter de espacio en blanco.

(\p{Sc}\s?)?

Coincide con cero o una aparición de la combinación de un símbolo de moneda seguido de cero o un carácter de espacio en blanco. Este es el primer grupo de captura.

\d+

Buscar coincidencias con uno o más dígitos decimales.

\.?

Coincide con cero o una aparición de un período (usado como un carácter de separador decimal).

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

Si un punto es el carácter anterior, coincide con uno o más dígitos decimales. Este patrón puede coincidir cero o una vez.

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

Con el patrón de uno o más dígitos decimales, seguido de un punto opcional y dígitos decimales adicionales. Este es el segundo grupo de captura. La llamada a la Replace(String, String) método reemplaza toda la coincidencia con el valor de este grupo capturado.

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

Si el primer grupo capturado existe, coincide con una cadena vacía. De lo contrario, coincide con cero o un carácter de espacio en blanco seguido de un símbolo de moneda.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: