2016-03-23 17 views
0

Biçimlendirmek istediğimiz metin girişi olarak bir String parametresi olarak alacağımız bir biçim yöntemi ve istediğimiz satırların uzunluğu olarak bir tamsayı yazmak zorunda olduğumuz bir programlama alıştırmam vardı.Java'da bir regex niceleyicisinde bir referans iletmek mümkün mü?

Ayrıca, belirli kurallarımız vardı ve bunlardan biri: bir kelime istenen uzunluktan daha uzunsa, kendi başına bir satıra gitmelidir.

Yani bunu yapmanın kolay bir yolu, bir Regex ifadeyle muhtemelen daha az uzunluk ve varlık olmayan beyaz boşluk karakterleri bir dizi arama ve her tarafında iki \ n ile kendisi tarafından eşleşti bu değiştirmekti ...

belki kod nettir: en bizim istenen hat uzunluğu Bu gerçekten iyi çalışıyor 10

String s = line.replaceAll("([ \t])(\\S{10,})([ \t])", "\n$2\n"); 
    System.out.println(s); 

olduğunu düşünelim.

Sorunum, satır uzunluğunun biçim yöntemine parametre olarak geçirilmesi gerektiğidir; Bu parametreye başvurabilmemin tek yolu referansını kullanmaktır. Örneğin:

kamu statik dize biçimi (String s, int uzunluk) {...

// şeyler

eksik

String s = line.replaceAll ("([\ t]) (\ S {uzunluk,}) ([\ t]) "," \ n $ 2 \ n "); System.out.println (s);

Ancak bu durumda bir hata döndürür: PatternSyntaxException

Sorum şu: (bunu bir sayı) niceleyicinin içine bir kaynak kullanmak için herhangi bir yolu istediğimiz olaylar sayısı için argüman olarak, orada eşleştirmek? Göründüğü gibi gerçekten yararlı olurdu, işe yaramadı görünmüyordu şaşırdı. Ayrıca, bu sorunla çok sayıda insanla karşılaşmıyor gibi görünüyor.

cevap

2

bu

String s = line.replaceAll("([ \t])(\S{"+length+",})([ \t])", "\n$2\n"); 
System.out.println(s); 
deneyin
İlgili konular