Rahatsız edici karakterleri kaldırma yaklaşımı potansiyel olarak sorunludur. Ya .dizede bir yerlerde başka biri varsa ? Kaldırılması gerekse de kaldırılmayacak!
Basamaklı olmayanları veya noktaları kaldırarak, dize karşılaştırılamaz joe.smith ($3,004.50)hale gelir .3004.50.
Imho, belirli bir kalıbı eşleştirmek ve bir grup kullanarak çıkarmak daha iyidir. Basit bir şey, tüm bitişik virgülleri, rakamları ve dönemleri regexp ile bulmak olabilir:
[\d,\.]+
Örnek test çalıştırması:
Pattern understood as:
[\d,\.]+
Enter string to check if matches pattern
> a2.3 fjdfadfj34 34j3424 2,300 adsfa
Group 0 match: "2.3"
Group 0 match: "34"
Group 0 match: "34"
Group 0 match: "3424"
Group 0 match: "2,300"
Ardından her eşleşme için tüm virgülleri kaldırın ve bunu ayrıştırıcıya gönderin. Böyle bir şeyi ele 12.323.344almak için, eşleşen bir alt dizenin en fazla bir alt dizeye sahip olup olmadığını görmek için başka bir kontrol yapabilirsiniz ..
joe.smith ($3,004.50)? Rahatsız edici karakter sınıflarını kaldırmak oldukça yanlış olabilir.