- Usullari
- Tasodifiy qatorni yaratish
- String taqqoslash:
equals()
yoki ==
?
Sinf
String
juda tez-tez dasturchilar tomonidan qo'llaniladi, shuning uchun uni juda yaxshi o'rganish kerak.
Esda tutingki, sinf ob'ektlari
String
o'zgarmasdir. Shunday qilib, siz satrni o'zgartirmoqda deb o'ylasangiz, aslida yangi satr yaratasiz. Java-da maxsus sinflar mavjud
StringBuffer
va
StringBuilder
ular qatorni o'zgartirishga imkon beradi.
String
,
StringBuffer
, sinflari
java.langStringBuilder
paketida belgilangan va import deklaratsiyasisiz avtomatik ravishda mavjud. Barcha uchta sinf interfeysni amalga oshiradi . String yaratish juda oddiy. Masalan, siz buni qilishingiz mumkin:
CharSequence
String aboutCat = "Кот - это звучит гордо, а если наступить на хвост, то громко";
Siz qatorlar qatorini yaratishingiz mumkin:
String[] cats = {"Васька", "Barsik", "Murzik"};
Siz bo'sh sinf ob'ektini yaratishingiz mumkin
String
:
String str = new String();
Belgilar qatori orqali satr yaratishingiz mumkin:
char[] chars = { 'c', 'a', 't' };
String str = new String(chars);
Belgilar massivining diapazonini belgilash imkonini beruvchi konstruktor ham mavjud. Siz diapazonning boshlanishini va foydalanish uchun belgilar sonini belgilashingiz kerak:
char[] chars = {'c', 'a', 't', 'a', 'm', 'a', 'r', 'a', 'n' };
String str = new String(chars, 0, 3);
Siz quyidagi konstruktorlar yordamida
String
sinflar ob'ektidan sinf ob'ektini yaratishingiz mumkin :
StringBuffer
StringBuilder
String(StringBuffer an object_StrBuf)
String(StringBuilder an object_StrBuild)
Operatorlar +
va += uchunString
Java tilida plyus belgisi (
+
) satrlarni birlashtirishni, boshqacha aytganda, satrlarni birlashtirishni bildiradi.
String cat = "Кот";
String name = "Васька";
String fullname = cat + " " + name;
Agar ifodadagi operandlardan birida satr bo'lsa, boshqa operandlar ham satr bo'lishi kerak. Shuning uchun, Java o'zi o'zgaruvchilarni satr bo'lmasa ham, satr tasviriga yuborishi mumkin.
int digit = 4;
String paws = " лапы";
String aboutcat = digit + paws;
За кулисами Java за нас преобразовало число 4 в строку "4"
Satrlarni formatlash
Faraz qilaylik, bizda string resurs bor:
<string name="aboutcat">У кота по имени Барсик четыре лапы, один хвост. Ему 5 лет</string>
Ushbu qatorni elementda dasturiy ravishda ko'rsatish uchun
TextView
siz koddan foydalanishingiz mumkin:
TextView tvCatsInfo = (TextView)findViewById(R.id.textView1);
tvCatsInfo.setText(R.string.aboutcat);
Tasavvur qiling-a, sizda bir nechta mushuk bor. Siz, albatta, har bir mushuk uchun o'z chizig'iga ega bo'lishingiz mumkin. Lekin chiziqlar juda o'xshash, faqat ismlar va yosh o'zgaradi. Bundan tashqari, panjalar va quyruqlar sonini o'zgartirishingiz mumkin (nima chekasiz?). Bunday hollarda siz string formatlashni qo'llashingiz mumkin. Biz o'zgartiradigan so'zlarni aniqlab olishimiz va ularni foiz belgisi bilan boshlanadigan, so'ngra bittaga ko'payadigan raqam, keyin
$s
satrlar yoki
$d
raqamlar uchun maxsus belgilar to'plami bilan almashtirishimiz kerak. Shunday qilib, keling, string resursimizni quyidagicha o'zgartiramiz:
<string name="aboutcat">У кота по имени %1$s %2$s лапы, %3$s хвост. Ему %4$d лет</string>
Keling, kodga o'zgartirish kiritamiz:
String strBarsik = "Barsik";
String strPaws = "четыре";
String strTail = "one";
int year = 5;
String strCats = getResources().getString(R.string.aboutcat);
String strFinal = String.format(strCats, strBarsik, strPaws, strTail, year);
tvCatsInfo.setText(strFinal);
Agar sizda mushuk Vaska bo'lsa va u olti yoshda bo'lsa, unda ikkita o'zgaruvchini qo'shing va chiziqni formatlang
String strVaska = "Васька";
year = 6;
String strFinal = String.format(strCats, strVaska, strPaws, strTail, year);
tvCatsInfo.setText(strFinal);
Bu erda oddiy formatlash misoli. Uni eslab qoling va to'g'ri joylarda foydalaning.
String manbai
Satrlarni resurslarda saqlash tavsiya etiladi. String manbasiga dasturiy ravishda kirish quyidagicha amalga oshiriladi:
String catName = getResources().getString(R.string.barsik);
Resurslardagi qator massivlaridan satrlarni ajratib oling
Aytaylik, sizda
strings.xml faylida belgilangan qator qatori bor
cats_array
. Keyin quyidagi manbalardan qatorlarga kirishingiz mumkin:
Resources res = getResources();
String[] cats = res.getStringArray(R.array.cats_array);
Usullari
public char charAt (int index)
Ushbu satrda belgilangan ofsetdagi belgini qaytaradi. Ortga hisoblash 0 dan boshlanadi. Salbiy va mavjud bo'lmagan qiymatlarni ishlatishning hojati yo'q, jiddiyroq bo'ling. Bir nechta belgilarni ajratib olish uchun foydalaning
getChars()
.
String testString = "Котёнок";
char myChar = testString.charAt(2);
tv.setText(Character.toString(myChar));
public int codePointAt(int index)
Berilgan indeksdagi Unicode belgisini qaytaradi
String testString = "Котёнок";
int myChar = testString.codePointAt(3);
tv.setText(String.valueOf(myChar));
public int codePointBefore(int index)
Berilgan indeksdan oldingi Unicode belgisini qaytaradi
String testString = "Котёнок";
int myChar = testString.codePointBefore(4);
tv.setText(String.valueOf(myChar));
public int codePointCount(int start, int end)
start
va pozitsiyalari orasidagi Unicode belgilar sonini hisoblaydi
end
String testString = "Котёнок";
int myChar = testString.codePointCount(0, 3);
tv.setText(String.valueOf(myChar));
public int compareTo(String string)
Belgilangan satrni Unicode belgilar qiymatlari yordamida taqqoslaydi va qaysi qator keyingisidan kichik, teng yoki katta ekanligini hisoblaydi. Saralash uchun ishlatilishi mumkin. Vaziyat hisobga olinadi. Agar satrlar mos keladigan bo'lsa, u holda 0 qaytariladi, agar noldan kichik bo'lsa, unda chaqiruvchi satr string dan kichik bo'lsa
string
, noldan katta bo'lsa, chaqiruvchi satr string dan katta bo'ladi
string
. Katta harfli so'zlar kichik harflar ustiga qo'yiladi.
String testString = "Котёнок";
if (testString.compareTo("котёнок") == 0) {
tvInfo.setText("Строки равны");
} else {
tvInfo.setText("Строки не равны. Возвращено"
+ testString.compareTo("котёнок"));
}
Satrlar massivini pufakchali tartiblash yordamida tartiblaymiz.
String[] poem = { "Мы", "везём", "с", "собой", "кота" };
for (int j = 0; j < poem.length; j++) {
for (int i = j + 1; i < poem.length; i++) {
if (poem[i].compareTo(poem[j]) < 0) {
String temp = poem[j];
poem[j] = poem[i];
poem[i] = temp;
}
}
System.out.println(poem[j]);
}
Natijada biz quyidagilarni olamiz:
Мы
везём
кота
с
собой
Ko'rib turganingizdek, atamalarning joylarini o'zgartirish mushuklarning
saralash yig'indisini o'zgartirmaydi . public int compareToIgnoreCase (String string)
Belgilangan qatorni katta-kichik harflarga sezgir bo'lmagan Unicode belgilar qiymatlari yordamida taqqoslaydi.
String testString = "Котёнок";
if (testString.compareToIgnoreCase("котёнок") == 0) {
tv.setText("Строки равны");
} else {
tv.setText("Строки не равны. Возвращено"
+ testString.compareTo("котёнок"));
}
public String concat (String string)
Belgilangan satr bilan qatorni birlashtiradi. Ikki qatorni birlashtirishni o'z ichiga olgan yangi satr qaytariladi. E'tibor bering, usul nomining o'zida mushuk mavjud!
String testString = "Сук";
String newString = testString.concat("кот");
tv.setText(newString);
Usul operator bilan bir xil funktsiyani bajaradi
+
va yozilishi mumkin
Сук + кот
. Ammo haqiqiy mushuk odam "mushuk" usulidan foydalanadi.
public boolean contains (CharSequence cs)
Satrda belgilar ketma-ketligi mavjudligini aniqlaydi
CharSequence
String testString = "котёнок";
if(testString.contains("кот")){
infoTextView.setText("В слове котёнок содержится слово кот!");
}
public static String copyValueOf (char[] data, int start, int length)
Uzunlik uzunligiData
pozitsiyasidan
start
(nolga asoslangan raqamlash) boshlanadigan massivdan belgilangan belgilarni o'z ichiga olgan yangi qatorni yaratadi . Belgilangan massivdagi belgilarni o'z ichiga olgan yangi satr yaratadi. Qator yaratilgandan keyin massivni o'zgartirish yaratilgan qatorni o'zgartirmaydi. Satr bilan tugashini tekshiradi .
public static String copyValueOf(char[] data)
public boolean endsWith(String suffix)
suffix
String str1 = "Суккот";
if(str1.endsWith("кот"))
infoTextView.setText("Слово заканчивается на котике");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean equals (Object string)
Belgilangan ob'ektni va satrni taqqoslaydi va taqqoslangan satrlar teng bo'lsa,
true qiymatini qaytaradi, ya'ni. bir xil belgilarni o'z ichiga oladi va bir xil katta-kichik tartibda.
String str1 = "Кот";
String str2 = "Кошка";
if(str1.equals(str2))
infoTextView.setText("Строки совпадают");
else
infoTextView.setText("Строки не совпадают");
==
Usulni ikkita ob'ekt havolasini solishtiradigan va ular bir xil misolga havola qilinganligini aniqlaydigan operator bilan aralashtirib yubormaslik kerak . String solishtirishga qarang:
equals()
yoki
==
?
public boolean equalsIgnoreCase(String string)
Belgilangan satrni manba satr bilan katta-kichik harflarni sezmaydigan tarzda solishtiradi va agar ular teng bo'lsa,
true qiymatini qaytaradi . AZ diapazoni az diapazoniga teng deb hisoblanadi.
String str1 = "Кот";
String str2 = "кот";
if(str1.equalsIgnoreCase(str2))
infoTextView.setText("Строки совпадают");
else
infoTextView.setText("Строки не совпадают");
public static String format(Locale locale, String format, Object... args)
Taqdim etilgan format va berilgan doirada mahalliylashtirilgan argumentlar yordamida formatlangan qatorni qaytaradi. Masalan, sana yoki vaqt
String.format("%.2f", floatValue);
Yangi satrda paydo bo'lgan ikkita so'zni yopishtiramiz. Bunday holda, ikkinchi so'z katta harf bilan ko'rsatiladi.
String str1 = "Кот";
String str2 = "васька";
String strResult = String.format("%s\n%S", str1, str2);
infoTextView.setText(strResult);
Sonni sakkizlik sistemaga aylantiring.
String str1 = "8";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Восьмеричное meaning): %o\n", inInt);
infoTextView.setText(strResult);
Analogiya bo'yicha, biz o'n oltilik tizimda ko'rsatamiz
String str1 = "255";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Шестнадцатеричное meaning): %x\n", inInt);
infoTextView.setText(strResult);
Katta harf foydalanish uchun
%X
, keyin
ff
bo'ladi
FF
. O'nlik tizimdan foydalanish uchun
%d
. Sana turli yo'llar bilan ham ko'rsatilishi mumkin.
Date now = new Date();
Locale locale = Locale.getDefault();
infoTextView.setText(
String.format(locale, "%tD\n", now) +
String.format(locale, "%tF\n", now) +
String.format(locale, "%tr\n", now) +
String.format(locale, "%tz\n", now) +
String.format(locale, "%tZ\n", now));
public byte[] getBytes(String charsetName)
Taqdim etilgan format yordamida formatlangan qatorni qaytaradi.
public void getBytes(int start, int end, byte[] data, int index)
va boshqa ortiqcha yuklamalar Usul belgilarni bayt massivida saqlaydi,
getChars()
. Ko'pincha boshqa Unicode belgilaridan foydalanadigan turli manbalardan satrlarni eksport qilishda foydalaniladi. Masalan, Java sukut bo'yicha 16 bitli Unicode belgilar bilan ishlaydi va Internetda satrlar ko'pincha 8 bitli Unicode, ASCII va hokazolardan foydalanadi.
public void getChars(int start, int end, char[] buffer, int index)
Satrdan bir nechta belgilarni ajratib olish usuli. Siz pastki satr boshi indeksini (
start
), ajratib olinadigan pastki satr oxiridan keyingi belgi indeksini ( end ) belgilashingiz kerak. Tanlangan belgilarni qabul qiluvchi massiv
bufer parametrida joylashgan . Massivdagi indeks, undan boshlab pastki qator yoziladi,
indeks parametrida uzatiladi . Massiv belgilangan pastki qatordagi barcha belgilarni o'z ichiga olishi uchun etarlicha katta ekanligiga ishonch hosil qiling.
String unusualCat = "Котёнок по имени Гав";
int start = 5;
int end = 12;
char[] buf = new char[end - start];
unusualCat.getChars(start, end, buf, 0);
infoTextView.setText(new String(buf));
public int hashCode()
Ushbu ob'ekt uchun xesh-kod bo'lgan butun sonni qaytaradi.
public int indexOf(int c)
Belgilangan indeks bilan birinchi duch kelgan pozitsiyaning sonini qaytaradi c.
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё")));
public int indexOf (int c, int start)
Pozitsiyadan boshlab indeksni qidiradi
start
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё", 4)));
public int indexOf (String string)
Belgilar qatorini qidiradi
subString
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка")));
public int indexOf (String subString, int start)
subString
Pozitsiyadan boshlanadigan belgilar qatorini qidiradi
start
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка", 2)));
public String intern ()
Satrni "xeshlar" satr
public boolean isEmpty ()
bo'sh yoki yo'qligini tekshiradi
if(catname.isEmpty()) {
}
Ushbu usul API 9 da (Android 2.1) paydo bo'ldi. Eski qurilmalar uchun foydalaning
String.length() == 0
public int lastIndexOf (String string) и другие перегруженные версии
Belgilangan indeksdagi oxirgi duch kelgan joyning raqamini qaytaradi. Masalan, siz fayl nomini kengaytmasiz olishingiz mumkin:
filename.toString().substring(0, filename.getString().lastIndexOf("."));
Ushbu misolda biz oxirgi nuqtaning o'rnini olamiz va undan oldingi pastki qatorni olamiz.
public int length()
Satr uzunligini qaytaradi
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.length()));
public boolean matches(String regularExpression)
Satrning oddiy iboralarga mos kelishini tekshiradi.
public int offsetByCodePoints (int index, int codePointOffset)
codePointOffset
Parametr tomonidan belgilangan boshlang'ich pozitsiyasidan keyin masofada joylashgan pozitsiyani qaytaradi.Usul
index
public boolean regionMatches (int thisStart, String string, int start, int length)
satrning belgilangan qismini satrning boshqa qismi bilan taqqoslaydi. Sinfning chaqiruvchi ob'ektining qatorlar oralig'i boshi indeksini ko'rsatishingiz kerak
String
. Taqqoslanadigan satr parametrda uzatiladi
string
. Taqqoslash amalga oshirilishi kerak bo'lgan belgining indeksi parametrga o'tkaziladi
start
va taqqoslanadigan pastki qator uzunligi parametrga o'tkaziladi
length
.
public boolean regionMatches (boolean ignoreCase, int thisStart, String string, int start, int length)
Haddan tashqari yuklangan versiya. Usul katta-kichik harflarga e'tibor bermasdan, satrning belgilangan qismini satrning boshqa qismi bilan taqqoslaydi.
public String replace(CharSequence target, CharSequence replacement) и другие перегруженные версии
Belgini yoki belgilar ketma-ketligini
target
o'zgartiradi
replacement
String testString = "whale";
infoTextView.setText(testString.replace("And", "о"));
public String replaceAll (String regularExpression, String replacement)
public String replaceFirst (String regularExpression, String replacement)
Muntazam ifoda yordamida birinchi belgilarni olib tashlaydi. Misol uchun, agar siz 001, 007, 000024 raqamlarining boshida nollarni olib tashlashingiz kerak bo'lsa, unda siz ushbu qo'ng'iroqdan foydalanishingiz mumkin.
String s = "001234-cat";
String s = s.replaceFirst ("^0*", "");
public String[] split (String regularExpression) и другие перегруженные версии
Satrni so‘zlar massiviga ajratadi. Masalan, Vaska Ryzhik Murzik Barsik qatori mavjud va biz mushuk nomlari qatorini olishni xohlaymiz:
String catnames = "Васька Рыжик Мурзик Барсик";
String aCats[] = catnames.split(" ");
Biz olamiz:
aCats[0] = Васька
aCats[1] = Рыжик
aCats[2] = Мурзик
aCats[3] = Барсик
public boolean startsWith(String prefix)
prefix
Satr satr boshidan boshlab belgilar bilan boshlanishini tekshiradi
String str1 = "котлета";
if(str1.startsWith("кот"))
infoTextView.setText("Слово содержит кота");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean startsWith(String prefix, int start)
Berilgan satr
prefix
belgilangan pozitsiyada belgilar bilan boshlanishini tekshiradi.
String str1 = "Суккот";
if(str1.startsWith("кот", 3))
infoTextView.setText("Слово содержит кота");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public CharSequence subSequence (int start, int end)
Usulga o'xshash
substring()
, lekin foydalanish mumkin
CharSequence
.
public String substring(int start)
va boshqa ortiqcha yuklar Berilgan satrdan pozitsiyadan boshlab
start
satr oxirigacha/pozitsiyadagi belgi bilan tugaydigan belgilar bilan yangi ketma-ketlik/satr yaratadi
end
. Yangi qatorda
start
oxirigacha belgilar mavjud - 1, shuning uchun biz yana bitta belgi olamiz.
String testString = "скотина";
infoTextView.setText(testString.substring(1, 4));
public char[] toCharArray()
Ushbu satrdagi belgilarni belgilar qatoriga ko'chiradi. Xuddi shu natijani orqali olish mumkin
getChars()
. Hujjatlar ushbu usuldan foydalanishni tavsiya etmaydi,
charAt()
.
String unusualCat = "Котёнок по имени Гав";
char[] yomoe = unusualCat.toCharArray();
infoTextView.setText(String.valueOf(yomoe[3]));
public String toLowerCase() и другие перегруженные версии
Satrni kichik harfga aylantiradi. Standart til konvertatsiyani boshqaradi. String cat = "Mushuk"; Pastki qator = cat.toLowerCase(); infoTextView.setText(pastki);
public String toString ()
Satrni qaytaradi. O'zi allaqachon tor bo'lgan ipning o'zi uchun ipni qaytarish ma'nosiz (oh, men uni qanday egdim). Ammo bu usul aslida boshqa sinflar uchun juda foydali.
public String toUpperCase()
Satrni katta harfga aylantiradi. Standart til konvertatsiyani boshqaradi.
String cat = "Кот";
String upper = cat.toUpperCase();
infoTextView.setText(upper);
public String trim()
Satrning boshida va oxiridagi bo'shliqlarni olib tashlaydi.
String str = " Hello Kitty ".trim();
infoTextView.setText(str);
public static String valueOf(long value)
va boshqa ortiqcha yuklar Tarkibni (raqamlar, ob'ektlar, belgilar, belgilar massivlari) satrga o'zgartiradi.
int catAge = 7;
infoTextView.setText(String.valueOf(catAge));
Tasodifiy qatorni yaratish
Aytaylik, bizga berilgan belgilarning tasodifiy qatori kerak.
private static final String mCHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
private static final int STR_LENGTH = 9;
Random random = new Random();
public void onClick(View view) {
TextView infoTextView = (TextView) findViewById(R.id.textViewInfo);
infoTextView.setText(createRandomString());
}
public String createRandomString() {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < STR_LENGTH; i++) {
int number = random.nextInt(mCHAR.length());
char ch = mCHAR.charAt(number);
builder.append(ch);
}
return builder.toString();
}
String taqqoslash: equals()
yoki ==
?
Keling, bir misolni ko'rib chiqaylik.
String str1 = "Murzik";
String str2 = new String(str1);
boolean isCat = str1 == str2;
infoTextView.setText(str1 + " == " + str2 + " -> " + isCat);
Ikkala o'zgaruvchida bir xil so'z bo'lsa-da, biz ikki xil ob'ekt bilan ishlaymiz va operator
false ni==
qaytaradi . Bir marta, daraxtlar katta bo'lganida, men turli manbalardan ikkita ipni solishtirishim kerak edi. Satrlar bir xil ko'rinsa-da, operator yordamida taqqoslash
noto'g'ri chiqdi va men uchun barcha kartalarni chalkashtirib yubordi. Va shundan keyingina men foydalanishim kerakligini bilib oldim . Java tilidagi satr alohida ob'ekt bo'lib, u boshqa ob'ekt bilan bir xil bo'lmasligi mumkin, ammo satrning chiqishi ekranda bir xil ko'rinishi mumkin. Shunchaki Java, mantiqiy operator (shuningdek ) misolida, ob'ektlarga havolalarni solishtiradi (ibtidoiylar bilan ishlashda bunday muammo yo'q):
==
equals()
==
!=
String s1 = "hello";
String s2 = "hello";
String s3 = s1;
String s4 = "h" + "e" + "l" + "l" + "o";
String s5 = new String("hello");
String s6 = new String(new char[]{'h', 'e', 'l', 'l', 'o'});
infoTextView.setText(s1 + " == " + s2 + ": " + (s1 == s2));
GO TO FULL VERSION