; ya da yeni hat? Scanner.useDelimiter(Pattern.compile("(\n)|;"));
Ama çalışmıyor: Java Tarayıcı soru
cevap
Genel kural olarak, desenlerde, \
'u iki katına çıkarmanız gerekir.
Yani,
Scanner.useDelimiter(Pattern.compile("(\\n)|;"));`
veya
Scanner.useDelimiter(Pattern.compile("[\\n;]"));`
Edit deneyin: \r\n
sorun ise, bu denemek isteyebilirsiniz:
Scanner.useDelimiter(Pattern.compile("[\\r\\n;]+"));
eşleşir bir veya daha fazla \r
, \n
ve ;
.
Not: Bunları denemedim.
Her iki tarafa da gidebilirsiniz. İki ters eğik çizgi kullanırsanız, regex derleyicisi '\ n' görür ve bunu bir satır besleme için kaçış dizisi olarak yorumlar. Bir ters eğik çizgi kullanırsanız, regex derleyicisi gerçek anlamıyla eşleşen gerçek bir satır besleme karakteri görür. Ama ben kesinlikle karakter-sınıfı versiyonu ile giderdim: '' [\\ n;] "' or '" [\ n;] "'; Daha verimli okumak için daha kolay. –
@Alan Moore: Ah, tamam ... Sadece basit bir satır aralığının yanlış yorumlanacağını varsaydım. – Powerlord
OP'nin yorumuna bakıldığında, sorun olan farklı bir satırın (\ r \ n veya CRLF) olduğu anlaşılıyor. İşte
mesela (veya arzu olabilir veya olmayabilir) ya biçimde birden çok noktalı virgül ve satır sonları bakacaklarını cevabım,Scanner.useDelimiter(Pattern.compile("([\n;]|(\r\n))+"));
var şöyle bir giriş dosyası: - Katılıyorum olsa hem benim durumumda çalıştı
1
2;3;;4
5
Normal \ n ve \\ n çalıştı 1,2,3,4,5
neden olacaktır Eğer normal ters eğik çizgi gerekiyorsa bunun bir kaçış karakteri olarak da ikiye isterim. Bu durumda, bu durumda "\ n", "ya da 'ekstra' \ '
ile istenen karakter olur. Daha önce keşfettiğiniz gibi, DOS/ağ stili \r\n
(CRLF) satır ayırıcılarını aramanız gerekiyordu. Unix stili \n
(yalnızca LF) yerine. Peki ya metin her ikisini de içeriyorsa? Bu çok olur; Aslında, bu sayfanın kaynağını gördüğümde her iki çeşidi de görüyorum.
Her iki tür ayırıcının yanı sıra eski Mac stili \r
(yalnızca CR) aramanın alışkanlıklarına da girmelisiniz.
\r?\n|\r
almak için örnek kod içine takma: Bu, bir defada tam olarak bir yeni satır veya noktalı virgül eşleştirmek istediğiniz üstleniyor
scanner.useDelimiter(";|\r?\n|\r");
İşte bunu bir yolu.Eğer birini veya daha fazla eşleşme istiyorsanız bunun yerine bunu yapabilirsiniz:
scanner.useDelimiter("[;\r\n]+");
Bildirimi de, bunu yerine Pattern regex dizede nasıl geçtiğini; Tüm regex'ler otomatik olarak önbelleğe alınır, bu nedenle regex'i önceden derlemek size herhangi bir performans artışı getirmez.
- 1. Java veri yapısı soru
- 2. Java Statik hakkında soru
- 3. Java, tarayıcı girdisinden
- 4. java (Quartz) planlaması ile başlayan acemi soru
- 5. Java Tarayıcı hasNext() string regex doğrulama
- 6. nasıl Tarayıcı Tarayıcı Kullanımı `
- 7. Java Generics Soru: Parametre E'nin kendi paragrafında olmadığı
- 8. Regex soru^[a-zA-Z0-9] {5,10} (Java) $
- 9. tarayıcı
- 10. Soru() 'ın
- 11. MySQL soru
- 12. Seçici soru
- 13. MySql soru
- 14. Scala Özellikleri Soru
- 15. Java/Javascript uygulaması içeren tarayıcı penceresini ön plana getirme
- 16. Selenium WebDriver'da Java ile mevcut tarayıcı penceresi nasıl yeniden boyutlandırılır?
- 17. Selenium WebDriver + Java kullanarak tarayıcı konsolu hata iletileri nasıl alınır?
- 18. Java yayı SseEmitter/ResponseBodyEmitter: tarayıcı yeniden yüklenmelerini algılar
- 19. Tarayıcı NoSuchElementException
- 20. Kurucu Tarayıcı tanımlanmamış
- 21. Tarayıcı kapalı değildir
- 22. Office Eklentileri hangi tarayıcı/tarayıcı motorunu kullanıyor?
- 23. Tarayıcı tarafındaki tarayıcı önbelleği nasıl temizlenir?
- 24. Basit matematik soru:
- 25. Django ve Reportlab Soru
- 26. Pyside, webkit temel soru
- 27. Windows Olayları hakkında soru
- 28. R- ihtiyacım regexp'in soru
- 29. Bu görüşme soru karşılaştığınız
- 30. alaycı beklentiler soru
Hata bulundu, kullanmam gerekiyor (\ r \ n) |; Böyle bir şeyi ayrıştırıyordum: string, number \ r \ n ... ve bir sayı olarak 100 \ r gibi bir şey almadı. – Razvi