2012-09-12 9 views
5

Temel olarak, eski bir web uygulamasını çoklu tarayıcı uyumlu olacak şekilde güncelleştiriyorum. Her yerde orijinal programcılar kullandık -Bir Dizenin Birden Fazla Parçasını Değiştirmek için Normal İfade (Visual Studio 2012'de)

document.all.element 

Ben sadece IE 4. tanıtılan standartları uyumlu ".getElementById" fonksiyonu IE 5. istediğim tanıtıldı IE edilir ".ALL" anlamak gibi

document.getElementById("element") 

nasıl özellikle Visual Studio'nun, "bul ve Değiştir" iletişim kutusunu kullanarak, bu normal ifadeyi oluşturacaktır - yukarıdaki ifadenin örneklerini değiştirmek için?

cevap

2

Bu, Visual Studio 2012 RC kullanarak bir sorun olup olmadığından emin değilim, ancak hiçbir şeyle eşleşemeyen parantezler kullanıyorum.

Ben bulmak ifadesini kullanarak sona erdi -

document\.all\.([a-zA-Z0-9]+) 

ve değiştirme "$ 1" parantez ifadesi anlamına gelir

document.getElementById("$1") 

.

Yardımlarınız için teşekkürler.

+0

Durum böyle olabilir, ben VS 2010'a alışkınım ve siz 2012'de olduğunuzu söylemediniz. –

+0

2012'yi kullandığımı söylemiştim ama bu durumda bir fark yaratmasını beklemiyordum. Şimdi ne yaptığımı ya da durumu yansıtacak şekilde cevabımı düzenleyeceğim (ve cevabımı doğru olarak işaretleyin) ya da cevabınız (ve dasblinkenlight'ın) görsel stüdyonun önceki sürümleri için doğru olduğu için jenerik bırakacağımdan emin değilim. –

+0

Bunun da farklı olmasını beklemiyorum, cevabınızı kabul etmekte çekinmeyin;) –

0

Normal bir ifadeye ihtiyacınız olduğunu düşünmüyorum.

Basitçe Visual Studio 2010'da iletişim

+0

Bu durumda çalışmayacaktım, "element" parçasını parantez ve tırnak işaretleri ile çevrelemem gerekiyor. –

+0

bana bunun işe yaramayacağı bir örnek gösterebilir misin? –

+0

Tamam Anladım. Document.all.elements bir indeks tarafından erişilir, bu bir fonksiyon değildir –

4

yerine metinde document.getElementById tarafından document.all.element yerine ve önceki düzenli ifade sözdizimi takip ediyor:

yedek kullanım \1 için ilk etiketini başvuru, bir ifade kullanımını { } etiketlemek için

document\.all\.{[a-zA-Z0-9]+} 
: senin durumunda

bulmaya ihtiyaç

ve ile değiştirin: Visual Studio 2012'de

document.getElementById('\1') 

düzenli ifade sözdizimi değişti:

document\.all\.([a-zA-Z0-9]+) 
document.getElementById('$1') 
+1

Visual Studio 2012'nin "{)' yerine '()' etiketi değil midir? Bu, Visual Studio'nun eski sürümleri. –

1

Arama

[.]all[.]{:i} 

için ve ile değiştirin

.getElementById("\1") 

. noktasında köşeli parantezler, meta-karakter olarak yorumlanmadığından emin olmak içindir (bunun yerine \.'u kullanabilirsiniz). :i, tanımlayıcısı için Visual Studio'nun sembolüdür. yerine dizede \1

ilk ifade (yani {:i} ifade) etiketli başvuran, bu tanımlayıcı çift tırnak içinde "yapıştırılan" olacaktır.