2012-06-14 12 views
6

Dizenin tüm öğelerini "belirli bir zaman sayısı" (dize uzunluğu) üzerinden geçiren bir for döngü kullanarak resmi şekilde yapmak istemiyorum.Java'da bir String'in sonuna ulaşıp ulaşmadığımı nasıl kontrol edebilirim?

Java'daki her dizginin sonunda her zaman c gibi olan herhangi bir karakter var mı?

+0

C içinde ne var? – adarshr

+0

Dosyadaki bir satırın sonu veya bir dizenin sonu? – ChadNC

+0

Hattın sonu mu demek istiyorsun? Aynı dizede birden fazla satırınız var mı? –

cevap

6

İki temel seçenek vardır: Bir karakter dizisi ile

String myString = "ABCD"; 
for (char c : myString.toCharArray()) 
{ 
    System.out.println("Characer is " + c); 
} 

for (int i = 0; i < myString.length(); i++) 
{ 
    System.out.println("Character is " + myString.charAt(i)); 
} 

ilk döngüler, normal endeksli döngü kullanarak ikinci döngüler. Ancak, Java, '\ n' (yeni satır) gibi karakterleri desteklemektedir. Bu karakterin varlığını kontrol etmek istiyorsanız, karakterin konumunu döndürecek indexOf ('\ n') yöntemini veya bulunamadığında -1 değerini kullanabilirsiniz. '\ N' karakterlerinin bir dizgiyi sonlandırabilmeleri için uyarılmaması gerektiği konusunda uyarın, böylece tek başına buna güvenemezsiniz.

Java'daki dizeler C'deki gibi bir NULL sonlandırıcısına sahip değil, bu nedenle bir dizenin ne kadar olduğunu öğrenmek için length() yöntemini kullanmanız gerekir.

+0

* gibi sonlandırılmış dizeyi bekler. Bir dizenin ne kadar uzun olduğunu öğrenmek için length() yöntemini kullanmanız gerekir. * - [Hayır yapmazsınız] (http://stackoverflow.com/questions/2910336/dize uzunlukta olmayan-uzunlukta-yöntemi-içinde-java kullanılarak) dönüştürülmüştür. – aioobe

+3

Bir String'in uzunluğunu bulmak için başka seçenekleriniz olduğunu biliyorum, tıpkı bir Java derleyicisine ihtiyaç duymadığınız gibi, bytecodes'i elle yazabilirsiniz, ancak Str.length() kullanarak basit ve kolay bir şekilde kullanabilirsiniz. yeni başlayan bir kodlayıcı, neden onu karıştırırsın? – Ewald

0
String[] splitUpByLines = multiLineString.split("\r\n"); 

String s dizisi, senin çoklu hat dize her temsilen bir satır geri döner.

+1

OP'nin istediği bu olduğunu düşünmeyin. Muhtemelen NUL, C. – nhahtdh

3

c sadece o gibi java her dizenin TND daima herhangi bir karakter var mı?

Hayır, bu Java dizeleri işe nasıl.

ben "zamanların özellikle hayır" dize bir bütün unsurları üzerine çıkması döngü kullanarak bunu resmi bir şekilde yapmak istiyorum (dize uzunluğu) yoktur.

tek seçenek o zaman muhtemelen kendi özel karakterini eklemek için olduğu:

yourString += '\0'; 

(ama yourString

;-) yanı ortada \0 içerebileceğini dikkat Dizede karakterlerin üzerinde yineleme yapıyorsanız,

for (char c : yourString.toCharArray()) 
    process(c); 
0

System.getProperty("line.separator"); Bu, işletim sisteminden bağımsız olarak yeni satır karakteri söyleyecektir. Dizenin karakterlerini muhtemelen bu new line karakterine karşı kontrol edebilirsiniz.

İlgili konular