Bir yanıt bulamadım .. Eğer sahiplerse: String s = "How are you"
? Bunu iki dizeye nasıl bölebilirim, yani ilk dize 0..s.length()/2
ve ikinci dize s.length()/2+1..s.length()
?Java'da bir dizgeyi konuma göre bölme
Teşekkürler!
Bir yanıt bulamadım .. Eğer sahiplerse: String s = "How are you"
? Bunu iki dizeye nasıl bölebilirim, yani ilk dize 0..s.length()/2
ve ikinci dize s.length()/2+1..s.length()
?Java'da bir dizgeyi konuma göre bölme
Teşekkürler!
kullanabilirsiniz 'alt dize (son, başlangıç)' de parkur çek dize önce boş değilse: Ve birlikte dize bekliyoruz
String first = s.substring(0, s.length()/2);
String second = s.substring(s.length()/2);
garip uzunluk? Bu durumda, bu vakayı doğru şekilde ele almak için mantık eklemelisiniz.
Ama bu bile işe yaramıyor ... '' sen misin '' ve '' sen '' – aioobe
@Torres, hayır, bu orta karakteri özleyecektir. (ve boş dizeye bir istisna atınız) – aioobe
Alois'in cevabı yanlıştır ve Torres de yanlıştır. Doğru cevap "String s =" Nasılsın? "; String first = s.substring (0, s.length()/2); Dize ikinci = s.substring (s.length()/2); – Ralph
String.substring(int) ve String.substring(int, int) yöntemini kullanın.
int cutPos = s.length()/2;
String s1 = s.substring(0, cutPos);
String s2 = s.substring(cutPos, s.length()); //which is essentially the same as
//String s2 = s.substring(cutPos);
Hata yaptınız: substring (beginPosition). bu yüzden, substring (cutPos), 's.substring (cutPos + 1, s.length()); ', daha iyi kullanmak' s.substring (cutPos + 1); 'yerine, substring (0, cutPos) –
ile aynı değildir. – Mot
@Yuri Bulkin, teşekkürler! Sorunumu çözdüm. –
Bu yapmalıdır: tek bağımsız değişkenle
String s = "How are you?";
String first = s.substring(0, s.length()/2); // gives "How ar"
String second = s.substring(s.length()/2); // gives "e you?"
String.substring(int i)
iki argümanlarla pozisyon i
String.substring(int i, int j)
başlayan alt dize döndürür i
başlayan ve biten alt dize döndürür j-1
.
(dize uzunluğu tekse, second
nedeniyle tamsayı bölümünde yuvarlanmasına first
birden fazla karaktere sahip olacağını unutmayın.)
String s0 = "How are you?";
String s1 = s0.subString(0, s0.length()/2);
String s2 = s0.subString(s0.length()/2);
Çok uzun s0 olmadığı için boş.
DÜZENLEME
ya indeksi 1 ekleyerek değildir gibi bu tek uzunluk dizeleri için çalışacaktır. Şaşırtıcı bir şekilde, sıfır uzunluğunda bir dizgede bile çalışır "".
Bir dizgiyi uzunluk olarak n öğelerine bölen bir yöntem. (Dize uzunluğu tam olarak n'a bölünemiyorsa, son öğe daha kısa olacaktır.)
public static String[] splitInEqualParts(final String s, final int n){
if(s == null){
return null;
}
final int strlen = s.length();
if(strlen < n){
// this could be handled differently
throw new IllegalArgumentException("String too short");
}
final String[] arr = new String[n];
final int tokensize = strlen/n + (strlen % n == 0 ? 0 : 1);
for(int i = 0; i < n; i++){
arr[i] =
s.substring(i * tokensize,
Math.min((i + 1) * tokensize, strlen));
}
return arr;
}
Testi kodu:
/**
* Didn't use Arrays.toString() because I wanted to have quotes.
*/
private static void printArray(final String[] arr){
System.out.print("[");
boolean first = true;
for(final String item : arr){
if(first) first = false;
else System.out.print(", ");
System.out.print("'" + item + "'");
}
System.out.println("]");
}
public static void main(final String[] args){
printArray(splitInEqualParts("Hound dog", 2));
printArray(splitInEqualParts("Love me tender", 3));
printArray(splitInEqualParts("Jailhouse Rock", 4));
}
Çıktı:
[ 'Hayri', 'köpek']
[ 'Aşk', 'beni te' , 'nder']
['Jail', 'hous', 'e Ro', 'ck']
Ha, aslında bunu arıyordum. :) Çok tembel .. Teşekkürler! – milosmns
Hiçbir yerde bir yanıt bulamadım. Bu durumda
java.lang.String
yılında:
hep bakmak gereken ilk yer, söz konusu sınıf için javadocs yer almaktadır. Javadocs
Uzunluk kaçsa ne olur? – Fluffy
@roddik: Uzunluğun bir int olduğu ve 2'nin bir int olduğu göz önünde bulundurulduğunda, bu tamsayı bölüştürür ve ikinci dizeden daha kısa bir ilk dizeyle sonuçlanır. – Powerlord