JavaRush /Java Blog /Random-TK /Setir synpy
articles
Dereje

Setir synpy

Toparda çap edildi
  • Usullar
  • Tötänleýin setir döretmek
  • Setir deňeşdirmesi: equals()ýa-da ==?
Synp Stringprogrammistler tarapyndan köplenç ulanylýar, şonuň üçin ony gaty gowy öwrenmeli. Synp setiri - 1Synp 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 StringBufferwe StringBuilderbu setirde üýtgeşmelere mümkinçilik berýär. Sapaklar java.lang bukjasynda kesgitlenendir we import deklarasiýasy bolmazdan awtomatiki Stringusulda elýeterlidir. Üç synpyň hemmesi interfeýsi durmuşa geçirýärler . Setir döretmek gaty ýönekeý. Mysal üçin, muny edip bilersiňiz: StringBufferStringBuilderCharSequence
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, Stringsynp obýektinden synp obýektini döredip bilersiňiz :StringBufferStringBuilder
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 TextViewkody 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 $ssetirler ýa-da $dsanlar üç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)); // возвращает 1105
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)); // возвращает 1105
public int codePointCount(int start, int end)startPositionserleriň arasyndaky icunikod nyşanlarynyň sanyny hasaplaýarend
String testString = "Котёнок";
int myChar = testString.codePointCount(0, 3);
tv.setText(String.valueOf(myChar)); // возвращает 3
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("котёнок")); // возвращает -32
}
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ýärCharSequence
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
// выводим число типа float с двумя знаками после запятой
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);
// выводим результат в TextView
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);
// число 255 будет выведено How ff
infoTextView.setText(strResult);
Baş harp bilen ulanmak üçin %X, şeýle ffbolar 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) + // (MM/DD/YY)
		String.format(locale, "%tF\n", now) + // (YYYY-MM-DD)
		String.format(locale, "%tr\n", now) + // Full 12-hour time
		String.format(locale, "%tz\n", now) + // Time zone GMT offset
		String.format(locale, "%tZ\n", now)); // Localized time zone bbreviation
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) . startSubstringiň ( ) 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 = "котёнок";
// символ ё встречается в четвёртой позиции (index = 3)
infoTextView.setText(String.valueOf(testString.indexOf("ё")));
public int indexOf (int c, int start) Indeksini ýagdaýdan başlap gözleýärstart
String testString = "котёнок";
// вернёт -1, так How после 5 символа буквы ё нет
infoTextView.setText(String.valueOf(testString.indexOf("ё", 4)));
public int indexOf (String string) Nyşanlaryň hataryny gözlemeksubString
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка")));
public int indexOf (String subString, int start)subStringPositionerleşýän ýerinden başlaýan simwollar üçin gözlegstart
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()) {
    // здесь ваш code
}
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())); // возвращает 7 (семь символов)
public boolean matches(String regularExpression) Setiriň yzygiderli aňlatmalara gabat gelýändigini barlaň.
public int offsetByCodePoints (int index, int codePointOffset)
codePointOffsetParametr 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 startwe 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ýärreplacement
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*", ""); // останется 1234-cat
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)prefixSetiriň 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ň prefixgö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ň startahyryna / pozisiýadaky nyşan bilen gutarýan simwollar bilen täze yzygiderlilik / setir döredýär end. Täze setirde startahyryna ç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));
// попробуйте и другие варианты
// infoTextView.setText(s1 + " equals " + s2 + ": " + (s1.equals(s2)));
// infoTextView.setText(s1 + " == " + s3 + ": " + (s1 == s3));
// infoTextView.setText(s1 + " equals " + s3 + ": " + (s1.equals(s3)));
// infoTextView.setText(s1 + " == " + s4 + ": " + (s1 == s4));
// infoTextView.setText(s1 + " equals " + s4 + ": " + (s1.equals(s4)));
// infoTextView.setText(s1 + " == " + s5 + ": " + (s1 == s5)); // false
// infoTextView.setText(s1 + " equals " + s5 + ": " + (s1.equals(s5)));
// infoTextView.setText(s1 + " == " + s6 + ": " + (s1 == s6)); // false
// infoTextView.setText(s1 + " equals " + s6 + ": " + (s1.equals(s6)));
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION