2017-07-13 6 views
-3

Wenn ich eine Zeichenfolge wie <iframe width="500"/>.Ersetzen Zeichenfolge mit einer anderen Zeichenfolge mit Regex

Ich versuche, width="500" zu width="100%" innerhalb dieser String-Variable zu ändern.

ich habe:

if(variableName.contains("width="*"") { variableName = variableName.Replace("width="*"", "100%"); } 

, das nicht zu tun, was ich hoffe, wie oben zu tun erklärt. Ein weiterer Hinweis ist, dass die Breite von eine andere Zufallszahl wie 650 oder sogar 500px sein kann.

Irgendwelche Ideen, wie ich das tun sollte?

Danke!

+1

Das erste, was ich in Ihrem Code bemerkt, dass Sie ist Verwenden Sie Anführungszeichen innerhalb Ihres Strings, ohne es zu umgehen, also wird '' width = "*" "' tatsächlich versuchen, den String '" width = "' mit dem String '" ''zu multiplizieren, was falsch ist. Sie können ein Sonderzeichen innerhalb einer Zeichenkette mit \ (zB '\" ') entfernen. – Rafalon

Antwort

2

Dies sollte für Sie arbeiten:

string g = "<iframe width=\"500\"/>"; 

string pattern = "width=\"\\d+\""; 
if (Regex.IsMatch(g, pattern)) 
{ 
    string replaced = Regex.Replace(g, pattern, "width=\"100%\""); 

} 

Erklärung:

Regex.IsMatch wird Ihnen sagen, wenn eine der String Ihr Muster enthält.

Regex.Replace wird das Muster auf eine gewünschte Zeichenfolge

\d+ ersetzen: sucht nach einem oder mehreren Vorkommen von einer Ziffer

EDIT:

eine andere Zufallszahl sein kann, wie 650 oder sogar sei 500px.

Sie das Prasseln verwenden können:

string pattern = "width=\"\\d+(px)?\""; 

(pc)?: bedeutet ein optionales px Element nach der Zahl, die 0 oder 1 mal auftreten können

+2

Fügen Sie' 'px?' 'Oder etwas Ähnliches in Ihre Regex ein, damit auch 500px geändert wird. – Rafalon

+0

@Rafalon Danke, ich habe dieses Ende verpasst Teil beim Lesen der Frage :) –

+1

Bitte beachten Sie, dass '?' genauer als '*' wäre, da es unwahrscheinlich ist, dass Strings wie 'width =" 500pxpxpxpx "' gefunden werden. '' 'bedeutet 0 oder 1 Vorkommen) – Rafalon

Verwandte Themen