- Usullar
- Tötänleýin setir döretmek
- Setir deňeşdirmesi:
equals()
ýa-da ==
?
Synp
String
programmistler tarapyndan köplenç ulanylýar, şonuň üçin ony gaty gowy öwrenmeli.
Synp obýektleriniň
String
üýtgewsizdigini ýadyňyzdan çykarmaň. Şonuň üçin bir setir üýtgedýärsiňiz öýdüp, hakykatdanam täze setir döredýärsiňiz. Java-da ýörite synplar bar
StringBuffer
we
StringBuilder
bu setirde üýtgeşmelere mümkinçilik berýär. Sapaklar
java.lang bukjasynda kesgitlenendir we import deklarasiýasy bolmazdan awtomatiki
String
usulda elýeterlidir. Üç synpyň hemmesi interfeýsi durmuşa geçirýärler . Setir döretmek gaty ýönekeý. Mysal üçin, muny edip bilersiňiz:
StringBuffer
StringBuilder
CharSequence
String aboutCat = "Кот - это звучит гордо, а если наступить на хвост, то громко";
Setirler toplumyny döredip bilersiňiz:
String[] cats = {"Васька", "Barsik", "Murzik"};
Boş synp obýektini döredip bilersiňiz
String
:
String str = new String();
Nyşan massiwiniň üsti bilen setir döredip bilersiňiz:
char[] chars = { 'c', 'a', 't' };
String str = new String(chars);
Nyşan massiwiniň diapazonyny kesgitlemäge mümkinçilik berýän konstruktor hem bar. Aralygyň başlangyjyny we ulanmaly nyşanlaryň sanyny görkezmeli:
char[] chars = {'c', 'a', 't', 'a', 'm', 'a', 'r', 'a', 'n' };
String str = new String(chars, 0, 3);
Aşakdaky konstruktorlary ulanyp,
String
synp obýektinden synp obýektini döredip bilersiňiz :
StringBuffer
StringBuilder
String(StringBuffer an object_StrBuf)
String(StringBuilder an object_StrBuild)
Operatorlar +
we + = üçinString
Java-da goşma belgi (
+
) setirleriň birleşmegini, başgaça aýdylanda setirleri birleşdirmegi aňladýar.
String cat = "Кот";
String name = "Васька";
String fullname = cat + " " + name;
Eger aňlatmadaky operandlaryň birinde bir setir bar bolsa, beýleki operandlar hem setir bolmaly. Şonuň üçin Java-yň özi setirleri bolmasa-da üýtgeýjileri setir şekillendirip biler.
int digit = 4;
String paws = " лапы";
String aboutcat = digit + paws;
За кулисами Java за нас преобразовало число 4 в строку "4"
Setirleri formatlamak
Geliň, çeşmämiz bar diýip pikir edeliň:
<string name="aboutcat">У кота по имени Барсик четыре лапы, один хвост. Ему 5 лет</string>
Bu setiri element taýdan programma taýdan görkezmek üçin
TextView
kody ulanyp bilersiňiz:
TextView tvCatsInfo = (TextView)findViewById(R.id.textView1);
tvCatsInfo.setText(R.string.aboutcat);
Birnäçe pişigiň bardygyny göz öňüne getiriň. Elbetde, her bir pişik üçin öz setiriňiz bolup biler. Emma setirler gaty meňzeýär, diňe atlar we ýaşlar üýtgeýär. Şeýle hem penjeleriň we guýruklaryň sanyny üýtgedip bilersiňiz (näme çilim çekýärsiňiz?). Şeýle ýagdaýlarda simli formatirlemäni ulanyp bilersiňiz. Üýtgedip boljak sözlerimizi kesgitlemeli we olary göterim nyşany bilen başlaýan, soň bolsa bir sany köpelýän, soňra
$s
setirler ýa-da
$d
sanlar üçin ýörite nyşanlaryň toplumy bilen çalyşmaly. Geliň, şular ýaly setir çeşmämizi üýtgedeliň:
<string name="aboutcat">У кота по имени %1$s %2$s лапы, %3$s хвост. Ему %4$d лет</string>
Koda üýtgeşmeler girizeliň:
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);
Vaska pişigiňiz bar bolsa we ol alty ýaşynda bolsa, iki üýtgeýji goşuň we setiri formatlaň
String strVaska = "Васька";
year = 6;
String strFinal = String.format(strCats, strVaska, strPaws, strTail, year);
tvCatsInfo.setText(strFinal);
Ine ýönekeý formatlaşdyryş mysaly. Rememberatda saklaň we gerek ýerlerde ulanyň.
Set çeşmesi
Setirleri çeşmelerde saklamak maslahat berilýär. Programma taýdan setir çeşmesine girmek şeýle edilýär:
String catName = getResources().getString(R.string.barsik);
Çeşmelerdäki setir massiwlerinden setirleri çykaryň
“String.xml” diýilýän faýlda kesgitlenen setir massiwiňiz bar diýeliň
cats_array
. Soňra şuňa meňzeş çeşmelerden hatarlara girip bilersiňiz:
Resources res = getResources();
String[] cats = res.getStringArray(R.array.cats_array);
Usullar
public char charAt (int index)
Bu setirde görkezilen ofsetde simwoly görkezýär. Hasaplama 0-dan başlaýar. Negativearamaz we ýok bahalary ulanmagyň zerurlygy ýok, has çynlakaý boluň. Birnäçe simwoly çykarmak üçin ulanyň
getChars()
.
String testString = "Котёнок";
char myChar = testString.charAt(2);
tv.setText(Character.toString(myChar));
public int codePointAt(int index)
Berlen indeksde icunikod nyşanyny görkezýär
String testString = "Котёнок";
int myChar = testString.codePointAt(3);
tv.setText(String.valueOf(myChar));
public int codePointBefore(int index)
Berlen indeksden öň icunikod nyşanyny görkezýär
String testString = "Котёнок";
int myChar = testString.codePointBefore(4);
tv.setText(String.valueOf(myChar));
public int codePointCount(int start, int end)
start
Positionserleriň arasyndaky icunikod nyşanlarynyň sanyny hasaplaýar
end
String testString = "Котёнок";
int myChar = testString.codePointCount(0, 3);
tv.setText(String.valueOf(myChar));
public int compareTo(String string)
“Unicode” nyşan bahalaryny ulanyp, görkezilen setiri deňeşdirýär we haýsy setiriň indikiinden az, deň ýa-da uludygyny hasaplaýar. Saýlamak üçin ulanylyp bilner. Kazyýet göz öňünde tutulýar. Setirler gabat gelýän bolsa, 0 yzyna gaýtarylýar, eger noldan az bolsa, onda jaň setiri setirden az
string
, eger noldan uly bolsa, onda çagyryş setiri setirden ulydyr
string
. Uly harplar kiçi harplaryň üstünde goýulýar.
String testString = "Котёнок";
if (testString.compareTo("котёнок") == 0) {
tvInfo.setText("Строки равны");
} else {
tvInfo.setText("Строки не равны. Возвращено"
+ testString.compareTo("котёнок"));
}
Geliň köpürjik görnüşini ulanyp setirleriň massiwini tertipläliň.
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]);
}
Netijede alýarys:
Мы
везём
кота
с
собой
Görşüňiz ýaly,
adalgalaryň ýerlerini üýtgetmek pişikleriň tertipleşdiriş mukdaryny üýtgetmeýär.
public int compareToIgnoreCase (String string)
Görkezilen setiri, “Unicode” nyşan bahalaryny ulanyp deňeşdirýär.
String testString = "Котёнок";
if (testString.compareToIgnoreCase("котёнок") == 0) {
tv.setText("Строки равны");
} else {
tv.setText("Строки не равны. Возвращено"
+ testString.compareTo("котёнок"));
}
public String concat (String string)
Görkezilen setir bilen bir setir baglanyşdyrýar. Iki setiriň birleşmesini öz içine alýan täze setir yzyna gaýtarylýar. Usulyň adynyň özünde pişigiň bardygyny unutmaň!
String testString = "Сук";
String newString = testString.concat("кот");
tv.setText(newString);
Usul operator bilen birmeňzeş funksiýany ýerine ýetirýär
+
we ýazylyp bilner
Сук + кот
. Emma hakyky pişik adam "pişik" usulyny ulanar.
public boolean contains (CharSequence cs)
Setirde nyşanlaryň yzygiderliligini ýa-da ýokdugyny kesgitleýär
CharSequence
String testString = "котёнок";
if(testString.contains("кот")){
infoTextView.setText("В слове котёнок содержится слово кот!");
}
public static String copyValueOf (char[] data, int start, int length)
UzynlykdakyData
pozisiýadan
start
(nol esasly belgileme) başlap , massiwde görkezilen nyşanlary öz içine alýan täze setir döredýär . Görkezilen massiwdäki nyşanlary öz içine alýan täze setir döredýär. Setir döredilenden soň massiwi üýtgetmek, döredilen hatary üýtgetmeýär. Setiriň gutarýandygyny ýa-da ýokdugyny barlaýar .
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)
Görkezilen obýekti we setiri deňeşdirýär we deňeşdirilen setirler deň bolsa, hakyky
bolýar . şol bir nyşanlary we şol bir kese duýgur tertipde öz içine alýar.
String str1 = "Кот";
String str2 = "Кошка";
if(str1.equals(str2))
infoTextView.setText("Строки совпадают");
else
infoTextView.setText("Строки не совпадают");
==
Usul , iki obýekt salgylanmasyny deňeşdirýän we şol bir meselä degişlidigini kesgitleýän operator bilen garyşdyrylmaly däldir . Setir deňeşdirmesine serediň:
equals()
ýa-da
==
?
public boolean equalsIgnoreCase(String string)
Görkezilen setiri deslapky setir bilen deňeşdirip, deňeşdirip, deň bolsa
hakykata gaýdyp gelýär. AZ diapazony az diapazonyna deň hasaplanýar.
String str1 = "Кот";
String str2 = "кот";
if(str1.equalsIgnoreCase(str2))
infoTextView.setText("Строки совпадают");
else
infoTextView.setText("Строки не совпадают");
public static String format(Locale locale, String format, Object... args)
Berlen çäkde lokallaşdyrylan üpjün edilen formaty we argumentleri ulanyp formatlanan setiri görkezýär. Mysal üçin sene ýa-da wagt
String.format("%.2f", floatValue);
Täze setirde peýda bolan iki sözi ýelimleýäris. Bu ýagdaýda ikinji söz baş harpda görkezilýär.
String str1 = "Кот";
String str2 = "васька";
String strResult = String.format("%s\n%S", str1, str2);
infoTextView.setText(strResult);
Sanlary oktal ulgamyna öwüriň.
String str1 = "8";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Восьмеричное meaning): %o\n", inInt);
infoTextView.setText(strResult);
Analogiýa boýunça, alty sanly ulgamda görkezýäris
String str1 = "255";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Шестнадцатеричное meaning): %x\n", inInt);
infoTextView.setText(strResult);
Baş harp bilen ulanmak üçin
%X
, şeýle
ff
bolar
FF
. Onluk ulgamy ulanmak üçin
%d
. Sene dürli görnüşde hem görkezilip bilner.
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)
Berlen formaty ulanyp formatlanan setiri görkezýär.
public void getBytes(int start, int end, byte[] data, int index)
we beýleki artykmaç ýükler Bu usul, nyşanlary baýt massiwinde saklaýar
getChars()
. Köplenç beýleki icunikod nyşanlaryny ulanýan dürli çeşmelerden setirler eksport edilende ulanylýar. Mysal üçin, Java 16 bitli icunikod nyşanlary bilen işleýär we internetde setirler köplenç 8 bitli icunikod, ASCII we ş.m. ulanýarlar
public void getChars(int start, int end, char[] buffer, int index)
.
start
Substringiň ( ) başlangyjy indeksini, çykaryljak substringiň soňundan (soňy) belginiň görkezijisini görkezmeli . Saýlanan nyşanlary alýan massiw
bufer parametrinde . Toplumda ýazyljak massiwdäki indeks,
indeks parametrinde geçýär . Görkezilen aşaky bölümdäki ähli nyşanlary öz içine alýan massiwiň uludygyna göz ýetiriň.
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()
Bu obýektiň hash kody bolan bitewi san görkezýär.
public int indexOf(int c)
Görkezilen indeks bilen ilkinji duşan ýagdaýyň sanyny görkezýär.
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё")));
public int indexOf (int c, int start)
Indeksini ýagdaýdan başlap gözleýär
start
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё", 4)));
public int indexOf (String string)
Nyşanlaryň hataryny gözlemek
subString
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка")));
public int indexOf (String subString, int start)
subString
Positionerleşýän ýerinden başlaýan simwollar üçin gözleg
start
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка", 2)));
public String intern ()
Setir "Hashes"
public boolean isEmpty ()
setiriň boşdygyny barlaýar
if(catname.isEmpty()) {
}
Bu usul API 9-da (Android 2.1) peýda boldy. Köne enjamlar üçin
String.length() == 0
public int lastIndexOf (String string) и другие перегруженные версии
görkezilen görkezijide iň soňky duşan ýagdaýyň sanyny görkezýär. Mysal üçin, faýlyň adyny şeýle giňeltmezden alyp bilersiňiz:
filename.toString().substring(0, filename.getString().lastIndexOf("."));
Bu mysalda iň soňky nokadyň ýerini alýarys we aşaky bölegini alýarys.
public int length()
Setiriň uzynlygyny görkezýär
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.length()));
public boolean matches(String regularExpression)
Setiriň yzygiderli aňlatmalara gabat gelýändigini barlaň.
public int offsetByCodePoints (int index, int codePointOffset)
codePointOffset
Parametr bilen görkezilen başlangyç pozisiýadan soň uzakda ýerleşýän ýagdaýy görkezýär .
index
public boolean regionMatches (int thisStart, String string, int start, int length)
Usul setiriň görkezilen bölegini setiriň başga bir bölegi bilen deňeşdirýär. Synpyň çagyryş obýektiniň hatar hatarynyň başynyň indeksini görkezmeli
String
. Deňeşdirilmeli setir parametrde geçýär
string
. Deňeşdirmegiň ýerine ýetirilmeli simwolynyň görkezijisi parametrde geçýär
start
we deňeşdirilmeli substratyň uzynlygy parametrde geçýär
length
.
public boolean regionMatches (boolean ignoreCase, int thisStart, String string, int start, int length)
Artykmaç wersiýa. Usul, hadysany hasaba almazdan, setiriň görkezilen bölegini setiriň başga bir bölegi bilen deňeşdirýär.
public String replace(CharSequence target, CharSequence replacement) и другие перегруженные версии
Nyşanlaryň ýa-da nyşanlaryň yzygiderliligini
target
üýtgedýär
replacement
String testString = "whale";
infoTextView.setText(testString.replace("And", "о"));
public String replaceAll (String regularExpression, String replacement)
public String replaceFirst (String regularExpression, String replacement)
Adaty aňlatmany ulanyp ilkinji nyşanlary aýyrýar. Mysal üçin, 001, 007, 000024 belgileriň başynda nollary aýyrmaly bolsaňyz, bu jaňy ulanyp bilersiňiz.
String s = "001234-cat";
String s = s.replaceFirst ("^0*", "");
public String[] split (String regularExpression) и другие перегруженные версии
Bir setiri sözleriň hataryna bölýär. Mysal üçin, Vaska Ryzhik Murzik Barsik atly bir setir bar we biz bir topar pişik atlaryny almak isleýäris:
String catnames = "Васька Рыжик Мурзик Барсик";
String aCats[] = catnames.split(" ");
Biz alýarys:
aCats[0] = Васька
aCats[1] = Рыжик
aCats[2] = Мурзик
aCats[3] = Барсик
public boolean startsWith(String prefix)
prefix
Setiriň başyndan simwollar bilen başlanýandygyny barlaň
String str1 = "котлета";
if(str1.startsWith("кот"))
infoTextView.setText("Слово содержит кота");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean startsWith(String prefix, int start)
Berlen setiriň
prefix
görkezilen ýerdäki nyşanlardan başlanýandygyny ýa-da ýokdugyny barlaýar.
String str1 = "Суккот";
if(str1.startsWith("кот", 3))
infoTextView.setText("Слово содержит кота");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public CharSequence subSequence (int start, int end)
Usula meňzeş
substring()
, ýöne ulanylyp bilner
CharSequence
.
public String substring(int start)
we beýleki artykmaç ýükler, berlen setirden setiriň
start
ahyryna / pozisiýadaky nyşan bilen gutarýan simwollar bilen täze yzygiderlilik / setir döredýär
end
. Täze setirde
start
ahyryna çenli nyşanlar bar - 1, şonuň üçin ýene bir nyşan alarys.
String testString = "скотина";
infoTextView.setText(testString.substring(1, 4));
public char[] toCharArray()
Bu setirdäki nyşanlary nyşan massiwine göçürýär. Şol bir netijäni
getChars()
. Resminamalar, bu usuly ulanmagy maslahat bermeýär
charAt()
.
String unusualCat = "Котёнок по имени Гав";
char[] yomoe = unusualCat.toCharArray();
infoTextView.setText(String.valueOf(yomoe[3]));
public String toLowerCase() и другие перегруженные версии
Setiri kiçi harplara öwürýär. Adaty ýerli öwrülişige gözegçilik edýär. Setirli pişik = "Pişik"; Aşakdaky setir = cat.toLowerCase (); infoTextView.setText (aşaky);
public String toString ()
Setir görkezýär. Setiriň özi üçin eýýäm bir setir bolan setiriň yzyna gaýtarylmagy manysyz (aý, nädip egdim). Emma bu usul beýleki synplar üçin gaty peýdaly.
public String toUpperCase()
Setiri baş harplara öwürýär. Adaty ýerli öwrülişige gözegçilik edýär.
String cat = "Кот";
String upper = cat.toUpperCase();
infoTextView.setText(upper);
public String trim()
Setiriň başynda we ahyrynda boşluklary aýyrýar.
String str = " Hello Kitty ".trim();
infoTextView.setText(str);
public static String valueOf(long value)
we beýleki artykmaç ýükler Mazmuny (sanlary, obýektleri, nyşanlary, nyşan massiwlerini) setire öwürýär.
int catAge = 7;
infoTextView.setText(String.valueOf(catAge));
Tötänleýin setir döretmek
Bize berlen nyşanlaryň tötänleýin setiri gerek diýeliň.
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();
}
Setir deňeşdirmesi: equals()
ýa-da ==
?
Bir mysala seredeliň.
String str1 = "Murzik";
String str2 = new String(str1);
boolean isCat = str1 == str2;
infoTextView.setText(str1 + " == " + str2 + " -> " + isCat);
Iki üýtgeýjiniň birmeňzeş sözi bar bolsa-da, biz iki dürli obýekt bilen iş salyşýarys we operator
ýalňyş==
gaýdyp geler . Bir gezek agaçlar uly bolanda, dürli çeşmelerden iki setiri deňeşdirmeli boldum. Setirler birmeňzeş görünse-de, operatory ulanmak bilen deňeşdirme
ýalňyş gaýdyp geldi we meniň üçin ähli kartoçkalary bulaşdyrdy. Soň bolsa, ulanmalydygyma düşündim . Java-daky setir, başga bir obýekt bilen meňzeş bolup bilmeýän aýratyn obýektdir, ýöne setiriň çykyşy ekranda birmeňzeş bolup biler. Diňe logiki operator (şeýle hem ) ýagdaýynda obýektlere salgylanmalary deňeşdirýär (primitiwler bilen işläniňizde beýle problema ýok):
==
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