ACTUALIZACIÓNCuál es el C# expresión regular equivalente a la de Java y appendReplacement appendTail
Esto es lo que ocurrió. Todavía no lo he probado porque es parte de un código mucho más grande que aún necesita ser portado.
¿Puedes ver algo que esté fuera de lugar?
private const string tempUserBlock = "%%%COMPRESS~USER{0}~{1}%%%";
string html = "some html";
int p = 0;
var userBlock = new ArrayList();
MatchCollection matcher = preservePatterns[p].Matches(html);
int index = 0;
StringBuilder sb = new StringBuilder();
int lastValue = 0;
foreach(Match match in matcher){
string matchValue = match.Groups[0].Value;
if(matchValue.Trim().Length > 0) {
userBlock.Add(matchValue);
int curIndex = lastValue + match.Index;
sb.Append(html.Substring(lastValue, curIndex));
sb.AppendFormat(tempUserBlock, p, index++);
lastValue = curIndex + match.Length;
}
}
sb.Append(html.Substring(lastValue));
html = sb.ToString();
post original ABAJO:
Aquí está el original de Java:
private static final String tempUserBlock = "%%%COMPRESS~USER{0}~{1}%%%";
String html = "some html";
int p = 0;
List<String> userBlock = new ArrayList<String>();
Matcher matcher = patternToMatch.matcher(html);
int index = 0;
StringBuffer sb = new StringBuffer();
while (matcher.find())
{
if (matcher.group(0).trim().length() > 0)
{
userBlock.add(matcher.group(0));
matcher.appendReplacement(sb, MessageFormat.format(tempUserBlock, p, index++));
}
}
matcher.appendTail(sb);
html = sb.toString();
Y mi C# conversión hasta el momento
private const string tempUserBlock = "%%%COMPRESS~USER{0}~{1}%%%";
string html = "some html";
int p = 0;
var userBlock = new ArrayList();
MatchCollection matcher = preservePattern.Matches(html);
int index = 0;
StringBuilder sb = new StringBuilder();
for(var i = 0; i < matcher.Count; ++i){
string match = matcher[i].Groups[0].Value;
if(match.Trim().Length > 0) {
userBlock.Add(match);
// WHAT DO I DO HERE?
sb.Append(string.Format(tempUserBlock, p, index++));
}
}
// WHAT DO I DO HERE?
matcher.appendTail(sb);
html = sb.toString();
Ver comentario arriba, donde pregunto, "¿QUÉ HAGO AQUÍ?"
Aclaración
El código Java anterior se realiza el reemplazo cadena en algo de HTML. Guarda el texto originalmente reemplazado porque necesita volver a insertarse más tarde después de que se complete la compresión del espacio en blanco.
¿Cuál es el problema? – erickson
¿Puede definir mejor el problema, como, cuál es el resultado esperado y cuál es el resultado que está obteniendo? – CodingGorilla
Supongo que son las partes marcadas con '// ¿QUÉ HAGO AQUÍ?' – jrummell