JavaRush /جاوا بلاگ /Random-UR /سٹرنگ کلاس
articles
سطح

سٹرنگ کلاس

گروپ میں شائع ہوا۔
  • طریقے
  • بے ترتیب تار تیار کرنا
  • سٹرنگ موازنہ: equals()یا ==؟
کلاس کو Stringاکثر پروگرامرز استعمال کرتے ہیں، اس لیے اسے بہت اچھی طرح سے سیکھنا چاہیے۔ کلاس سٹرنگ - 1یاد رکھیں کہ کلاس آبجیکٹ Stringناقابل تغیر ہیں۔ لہذا جب آپ سوچتے ہیں کہ آپ سٹرنگ تبدیل کر رہے ہیں، تو آپ اصل میں ایک نئی سٹرنگ بنا رہے ہیں۔ جاوا میں خاص کلاسیں ہیں StringBufferاور StringBuilderجو سٹرنگ میں تبدیلیوں کی اجازت دیتی ہیں۔ کلاسز String, StringBuffer, کو java.langStringBuilder پیکیج میں بیان کیا گیا ہے اور بغیر کسی درآمدی اعلان کے خود بخود دستیاب ہیں۔ تینوں کلاسیں انٹرفیس کو نافذ کرتی ہیں ۔ سٹرنگ بنانا بہت آسان ہے۔ مثال کے طور پر، آپ یہ کر سکتے ہیں: CharSequence

String aboutCat = "Кот - это звучит гордо, а если наступить на хвост, то громко";
آپ تاروں کی ایک صف بنا سکتے ہیں:

String[] cats = {"Васька", "Barsik", "Murzik"};
آپ ایک خالی کلاس آبجیکٹ بنا سکتے ہیں String:

String str = new String();
آپ کریکٹر صف کے ذریعے سٹرنگ بنا سکتے ہیں:

char[] chars = { 'c', 'a', 't' };
String str = new String(chars);
ایک کنسٹرکٹر بھی ہے جو آپ کو کریکٹر اری کی رینج سیٹ کرنے کی اجازت دیتا ہے۔ آپ کو رینج کا آغاز اور استعمال کرنے کے لیے حروف کی تعداد بتانے کی ضرورت ہے:

char[] chars = {'c', 'a', 't', 'a', 'm', 'a', 'r', 'a', 'n' };
String str = new String(chars, 0, 3);
آپ درج ذیل کنسٹرکٹرز کا استعمال کرتے ہوئے Stringکلاس آبجیکٹ سے کلاس آبجیکٹ بنا سکتے ہیں ۔StringBufferStringBuilder

String(StringBuffer an object_StrBuf)
String(StringBuilder an object_StrBuild)

آپریٹرز +اور += کے لیےString

جاوا میں، جمع علامت ( +) کا مطلب ہے سٹرنگ جوڑنا، دوسرے لفظوں میں، تاروں کو ملانا۔

String cat = "Кот";
String name = "Васька";
//складываем две строки и пробел между ними, чтобы слова не слиплись
String fullname = cat + " " + name; // получится Кот Васька
اگر ایکسپریشن میں آپرینڈز میں سے ایک سٹرنگ پر مشتمل ہے، تو دوسرے آپرینڈز کو بھی سٹرنگ ہونا چاہیے۔ لہذا، جاوا خود متغیرات کو سٹرنگ کی نمائندگی کے لیے کاسٹ کر سکتا ہے، چاہے وہ تار ہی کیوں نہ ہوں۔

int digit = 4;
String paws = " лапы";
String aboutcat = digit + paws; // хотя мы складываем число и строку, но все равно получим строку
За кулисами Java за нас преобразовало число 4 в строку "4"

فارمیٹنگ کے تار

آئیے فرض کریں کہ ہمارے پاس سٹرنگ ریسورس ہے:

<string name="aboutcat">У кота по имени Барсик четыре лапы, один хвост. Ему 5 лет</string>
اس سٹرنگ کو پروگرام کے مطابق عنصر میں ظاہر کرنے کے لیے TextView، آپ کوڈ استعمال کر سکتے ہیں:

TextView tvCatsInfo = (TextView)findViewById(R.id.textView1);
tvCatsInfo.setText(R.string.aboutcat);
تصور کریں کہ آپ کے پاس کئی بلیاں ہیں۔ آپ یقیناً ہر بلی کے لیے اپنی لائن رکھ سکتے ہیں۔ لیکن لکیریں بہت ملتی جلتی ہیں، صرف نام اور عمریں بدلتی ہیں۔ آپ پنجوں اور دموں کی تعداد بھی تبدیل کر سکتے ہیں (آپ کیا تمباکو نوشی کر رہے ہیں؟) ایسے معاملات میں، آپ سٹرنگ فارمیٹنگ کا اطلاق کر سکتے ہیں۔ ہمیں ان الفاظ کا تعین کرنے کی ضرورت ہے جنہیں ہم تبدیل کریں گے اور انہیں حروف کے ایک خاص سیٹ سے تبدیل کریں گے جو فیصد کی علامت سے شروع ہوتا ہے، پھر ایک عدد بڑھتا ہے، پھر $sتاروں کے لیے یا $dاعداد کے لیے۔ تو آئیے اپنے اسٹرنگ ریسورس کو اس طرح تبدیل کریں:

<string name="aboutcat">У кота по имени %1$s %2$s лапы, %3$s хвост. Ему %4$d лет</string>
آئیے کوڈ میں تبدیلیاں کرتے ہیں:

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 ہے اور وہ چھ سال کی ہے، تو دو متغیرات شامل کریں اور لائن کو فارمیٹ کریں۔

String strVaska = "Васька";
year = 6;
String strFinal = String.format(strCats, strVaska, strPaws, strTail, year);  
tvCatsInfo.setText(strFinal);
یہاں فارمیٹنگ کی ایک سادہ مثال ہے۔ اسے یاد رکھیں اور اسے صحیح جگہوں پر استعمال کریں۔

اسٹرنگ کا وسیلہ

وسائل میں تاروں کو ذخیرہ کرنے کا مشورہ دیا جاتا ہے۔ پروگرامی طور پر کسی سٹرنگ وسائل تک رسائی اس طرح کی جاتی ہے:

String catName = getResources().getString(R.string.barsik);

وسائل میں سٹرنگ صفوں سے سٹرنگ نکالیں۔

فرض کریں کہ آپ کے پاس strings.xml فائل میں ایک سٹرنگ سرنی کی وضاحت ہے جسے کہا جاتا ہے cats_array۔ پھر آپ اس طرح کے وسائل سے قطاروں تک رسائی حاصل کرسکتے ہیں:

Resources res = getResources();
String[] cats = res.getStringArray(R.array.cats_array);

طریقے

public char charAt (int index) اس سٹرنگ میں مخصوص آفسیٹ پر کریکٹر لوٹاتا ہے۔ الٹی گنتی 0 سے شروع ہوتی ہے۔ منفی اور غیر موجود اقدار کو استعمال کرنے کی ضرورت نہیں ہے، زیادہ سنجیدہ رہیں۔ ایک سے زیادہ حروف نکالنے کے لیے استعمال کریں getChars()۔

String testString = "Котёнок";
char myChar = testString.charAt(2);
tv.setText(Character.toString(myChar)); // выводит третий символ - т
public int codePointAt(int index) دیئے گئے انڈیکس پر یونیکوڈ کریکٹر لوٹاتا ہے۔

String testString = "Котёнок";
int myChar = testString.codePointAt(3);
tv.setText(String.valueOf(myChar)); // возвращает 1105
public int codePointBefore(int index) یونیکوڈ کریکٹر لوٹاتا ہے جو دیے گئے انڈیکس سے پہلے ہے۔

String testString = "Котёнок";
int myChar = testString.codePointBefore(4);
tv.setText(String.valueOf(myChar)); // возвращает 1105
public int codePointCount(int start, int end)startپوزیشنز اور کے درمیان یونیکوڈ حروف کی تعداد کا حساب لگاتا ہے۔end

String testString = "Котёнок";
int myChar = testString.codePointCount(0, 3);
tv.setText(String.valueOf(myChar)); // возвращает 3
public int compareTo(String string) یونیکوڈ کریکٹر ویلیوز کا استعمال کرتے ہوئے مخصوص سٹرنگ کا موازنہ کرتا ہے اور حساب لگاتا ہے کہ کون سی سٹرنگ اگلی سے کم، برابر یا زیادہ ہے۔ چھانٹنے کے لیے استعمال کیا جا سکتا ہے۔ کیس کو مدنظر رکھا جاتا ہے۔ اگر سٹرنگز مماثل ہیں، تو 0 لوٹایا جاتا ہے، اگر صفر سے کم ہے، تو کالنگ سٹرنگ سٹرنگ سے کم ہے string، اگر صفر سے زیادہ ہے، تو کالنگ سٹرنگ سٹرنگ سے بڑی ہے string۔ اپر کیس الفاظ کو لوئر کیس الفاظ کے اوپر رکھا جاتا ہے۔

String testString = "Котёнок";

if (testString.compareTo("котёнок") == 0) {
    tvInfo.setText("Строки равны");
} else {
    tvInfo.setText("Строки не равны. Возвращено"
            + testString.compareTo("котёнок")); // возвращает -32
}
آئیے بلبلے کی ترتیب کا استعمال کرتے ہوئے تاروں کی صف کو ترتیب دیں۔

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]);
}
نتیجے کے طور پر ہم حاصل کرتے ہیں:

Мы
везём
кота
с
собой
جیسا کہ آپ دیکھ سکتے ہیں، شرائط کی جگہوں کو تبدیل کرنے سے بلیوں کی چھانٹی ہوئی رقم میں کوئی تبدیلی نہیں آتی۔ public int compareToIgnoreCase (String string) یونیکوڈ کریکٹر ویلیوز کا استعمال کرتے ہوئے مخصوص سٹرنگ کا موازنہ کرتا ہے، کیس کے لیے غیر حساس۔

String testString = "Котёнок";

if (testString.compareToIgnoreCase("котёнок") == 0) {
    tv.setText("Строки равны"); // слова одинаковы, если не учитывать регистр
} else {
    tv.setText("Строки не равны. Возвращено"
            + testString.compareTo("котёнок"));
}
public String concat (String string) مخصوص سٹرنگ کے ساتھ سٹرنگ کو جوڑتا ہے۔ ایک نیا سٹرنگ لوٹا جاتا ہے جس میں دو تاروں کا جوڑ ہوتا ہے۔ نوٹ کریں کہ طریقہ کا نام خود ایک بلی پر مشتمل ہے!

String testString = "Сук";
String newString = testString.concat("кот");
tv.setText(newString);
طریقہ آپریٹر کے طور پر ایک ہی کام کرتا ہے +اور لکھا جا سکتا ہے Сук + кот. لیکن ایک حقیقی بلی والا شخص "بلی" کا طریقہ استعمال کرے گا۔ public boolean contains (CharSequence cs) اس بات کا تعین کرتا ہے کہ آیا سٹرنگ میں حروف کی ترتیب شامل ہے۔CharSequence

String testString = "котёнок";

if(testString.contains("кот")){
    infoTextView.setText("В слове котёнок содержится слово кот!");
}
public static String copyValueOf (char[] data, int start, int length)ایک نئی سٹرنگ بناتا ہے جس میں طوالت کی لمبائیData کی پوزیشن start(صفر پر مبنی نمبرنگ) سے شروع ہونے والی صف سے مخصوص حروف شامل ہوتے ہیں ۔ مخصوص صف سے حروف پر مشتمل ایک نئی سٹرنگ بناتا ہے۔ قطار بننے کے بعد صف کو تبدیل کرنے سے تخلیق شدہ قطار تبدیل نہیں ہوتی ہے۔ چیک کرتا ہے کہ آیا سٹرنگ کے ساتھ ختم ہوتی ہے ۔ 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) متعین آبجیکٹ اور سٹرنگ کا موازنہ کرتا ہے اور اگر موازنہ والی تاریں برابر ہوں تو درست لوٹاتا ہے، یعنی ایک جیسے حروف پر مشتمل ہے اور ایک ہی کیس-حساس ترتیب میں۔

String str1 = "Кот";
String str2 = "Кошка";

if(str1.equals(str2))
    infoTextView.setText("Строки совпадают");
else
    infoTextView.setText("Строки не совпадают");
طریقہ آپریٹر کے ساتھ الجھنا نہیں ہے ==، جو دو آبجیکٹ حوالوں کا موازنہ کرتا ہے اور یہ طے کرتا ہے کہ آیا وہ ایک ہی مثال کا حوالہ دیتے ہیں۔ سٹرنگ موازنہ دیکھیں: equals()یا ==؟ public boolean equalsIgnoreCase(String string) مخصوص سٹرنگ کا ماخذ سٹرنگ کے ساتھ کیس غیر حساس انداز میں موازنہ کرتا ہے اور اگر وہ برابر ہوں تو درست لوٹاتا ہے۔ AZ رینج کو AZ رینج کے برابر سمجھا جاتا ہے۔

String str1 = "Кот";
String str2 = "кот";

if(str1.equalsIgnoreCase(str2))
    infoTextView.setText("Строки совпадают");
else
    infoTextView.setText("Строки не совпадают");
public static String format(Locale locale, String format, Object... args)
فراہم کردہ فارمیٹ اور دیے گئے دائرہ کار میں مقامی دلائل کا استعمال کرتے ہوئے فارمیٹ شدہ سٹرنگ لوٹاتا ہے۔ مثال کے طور پر تاریخ یا وقت

// выводим число типа float с двумя знаками после запятой
String.format("%.2f", floatValue);
ہم دو الفاظ چپکتے ہیں جو ایک نئی لائن پر ظاہر ہوتے ہیں۔ اس صورت میں، دوسرا لفظ اوپری کیس میں ظاہر ہوتا ہے۔

String str1 = "Кот";
String str2 = "васька";
String strResult = String.format("%s\n%S", str1, str2);
// выводим результат в TextView
infoTextView.setText(strResult);
نمبر کو آکٹل سسٹم میں تبدیل کریں۔

String str1 = "8";
int inInt = Integer.parseInt(str1); // конвертируем строку в число
String strResult = String.format("(Восьмеричное meaning): %o\n", inInt);

infoTextView.setText(strResult);
تشبیہ کے لحاظ سے، ہم ہیکساڈیسیمل سسٹم میں ڈسپلے کرتے ہیں۔

String str1 = "255";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Шестнадцатеричное meaning): %x\n", inInt);
// число 255 будет выведено How ff
infoTextView.setText(strResult);
بڑے حروف کے استعمال کے لیے %X، پھر ffیہ ہو جائے گا FF۔ اعشاریہ نظام کے استعمال کے لیے %d۔ تاریخ کو مختلف طریقوں سے بھی دکھایا جا سکتا ہے۔

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) فراہم کردہ فارمیٹ کا استعمال کرتے ہوئے فارمیٹ شدہ سٹرنگ لوٹاتا ہے۔ public void getBytes(int start, int end, byte[] data, int index)اور دیگر اوورلوڈز یہ طریقہ حروف کو بائٹ سرنی میں محفوظ کرتا ہے، کا متبادل getChars()۔ اکثر مختلف ذرائع سے تار برآمد کرتے وقت استعمال کیا جاتا ہے جو دوسرے یونی کوڈ حروف استعمال کرتے ہیں۔ مثال کے طور پر، جاوا بذریعہ ڈیفالٹ 16 بٹ یونیکوڈ حروف کے ساتھ کام کرتا ہے، اور انٹرنیٹ پر، سٹرنگز اکثر 8 بٹ یونیکوڈ، ASCII، وغیرہ کا استعمال کرتے ہیں۔ public void getChars(int start, int end, char[] buffer, int index) ایک سٹرنگ سے متعدد حروف نکالنے کا طریقہ۔ آپ کو ذیلی اسٹرنگ کے آغاز کا اشاریہ ( start) بتانے کی ضرورت ہے، نکالنے کے لیے سبسٹرنگ کے اختتام کے بعد کردار کا اشاریہ ( end )۔ منتخب کردہ حروف حاصل کرنے والی صف بفر پیرامیٹر میں ہے ۔ صف میں انڈیکس، جس سے سبسٹرنگ لکھی جائے گی، کو انڈیکس پیرامیٹر میں پاس کیا جاتا ہے ۔ یقینی بنائیں کہ صف اتنی بڑی ہے کہ مخصوص ذیلی اسٹرنگ میں تمام حروف شامل ہوں۔

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() ایک انٹیجر لوٹاتا ہے جو اس آبجیکٹ کا ہیش کوڈ ہے۔ public int indexOf(int c) متعین انڈیکس c کے ساتھ پہلی بار سامنے آنے والی پوزیشن کا نمبر لوٹاتا ہے۔

String testString = "котёнок";
// символ ё встречается в четвёртой позиции (index = 3)
infoTextView.setText(String.valueOf(testString.indexOf("ё")));
public int indexOf (int c, int start) انڈیکس کو پوزیشن سے شروع کرتے ہوئے دیکھتا ہے۔start

String testString = "котёнок";
// вернёт -1, так How после 5 символа буквы ё нет
infoTextView.setText(String.valueOf(testString.indexOf("ё", 4)));
public int indexOf (String string) حروف کی ایک تار تلاش کرتا ہے۔subString

String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка")));
public int indexOf (String subString, int start)subStringپوزیشن سے شروع ہونے والے حروف کی تار تلاش کرتا ہے۔start

String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка", 2)));
public String intern () اسٹرنگ کو "ہیش" public boolean isEmpty () کرتا ہے کہ آیا سٹرنگ خالی ہے یا نہیں۔

if(catname.isEmpty()) {
    // здесь ваш code
}
یہ طریقہ API 9 (Android 2.1) میں ظاہر ہوا۔ پرانے آلات کے لیے، String.length() == 0 public int lastIndexOf (String string) и другие перегруженные версии مخصوص انڈیکس پر آخری سامنا کی گئی پوزیشن کا نمبر لوٹاتا استعمال کریں۔ مثال کے طور پر، آپ اس طرح توسیع کے بغیر فائل کا نام حاصل کر سکتے ہیں:

filename.toString().substring(0, filename.getString().lastIndexOf("."));
اس مثال میں، ہم آخری پوائنٹ کی پوزیشن حاصل کرتے ہیں اور اس سے پہلے سبسٹرنگ حاصل کرتے ہیں۔ public int length() سٹرنگ کی لمبائی لوٹاتا ہے۔

String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.length())); // возвращает 7 (семь символов)
public boolean matches(String regularExpression) چیک کرتا ہے کہ آیا کوئی سٹرنگ ریگولر ایکسپریشنز سے میل کھاتا ہے۔

public int offsetByCodePoints (int index, int codePointOffset)
codePointOffsetپیرامیٹر کے ذریعے متعین ابتدائی پوزیشن کے بعد فاصلے پر واقع پوزیشن لوٹاتا ہے ۔ index public boolean regionMatches (int thisStart, String string, int start, int length) طریقہ سٹرنگ کے مخصوص حصے کا سٹرنگ کے دوسرے حصے سے موازنہ کرتا ہے۔ آپ کو کلاس کے کالنگ آبجیکٹ کی قطار کی حد کے آغاز کا انڈیکس بتانا ہوگا String۔ جس سٹرنگ کا موازنہ کرنا ہے اسے پیرامیٹر میں پاس کیا جاتا ہے string۔ کریکٹر کا انڈیکس جس سے موازنہ کرنے کی ضرورت ہوتی ہے اسے پیرامیٹر میں پاس کیا جاتا ہے start، اور موازنہ کرنے کے لیے سبسٹرنگ کی لمبائی کو پیرامیٹر میں پاس کیا جاتا ہے length۔ public boolean regionMatches (boolean ignoreCase, int thisStart, String string, int start, int length) اوورلوڈ ورژن۔ طریقہ کیس کو نظر انداز کرتے ہوئے سٹرنگ کے مخصوص حصے کا سٹرنگ کے دوسرے حصے سے موازنہ کرتا ہے۔ public String replace(CharSequence target, CharSequence replacement) и другие перегруженные версии کریکٹر یا حروف کی ترتیب کو targetاس میں تبدیل کرتا ہے۔replacement

String testString = "whale";
// меняем и на о
infoTextView.setText(testString.replace("And", "о")); // возвращается кот
public String replaceAll (String regularExpression, String replacement) public String replaceFirst (String regularExpression, String replacement) ریگولر ایکسپریشن کا استعمال کرتے ہوئے پہلے حروف کو ہٹاتا ہے۔ مثال کے طور پر، اگر آپ کو 001، 007، 000024 نمبروں کے شروع میں زیرو ہٹانے کی ضرورت ہے، تو آپ اس کال کو استعمال کر سکتے ہیں۔

String s = "001234-cat";
String s = s.replaceFirst ("^0*", ""); // останется 1234-cat
public String[] split (String regularExpression) и другие перегруженные версии سٹرنگ کو الفاظ کی ایک صف میں تقسیم کرتا ہے۔ مثال کے طور پر، ایک تار ہے Vaska Ryzhik Murzik Barsik اور ہم بلی کے ناموں کی ایک صف حاصل کرنا چاہتے ہیں:

String catnames = "Васька Рыжик Мурзик Барсик";  
String aCats[] = catnames.split(" ");  // по пробелу
ہم حاصل:

aCats[0] = Васька
aCats[1] = Рыжик
aCats[2] = Мурзик
aCats[3] = Барсик
public boolean startsWith(String prefix)prefixچیک کرتا ہے کہ آیا سٹرنگ سٹرنگ کے شروع سے حروف کے ساتھ شروع ہوتی ہے۔

String str1 = "котлета";

if(str1.startsWith("кот"))
    infoTextView.setText("Слово содержит кота");
else
    infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean startsWith(String prefix, int start) چیک کرتا ہے کہ آیا دی گئی سٹرنگ prefixمخصوص پوزیشن پر حروف کے ساتھ شروع ہوتی ہے۔

String str1 = "Суккот";

if(str1.startsWith("кот", 3))
    infoTextView.setText("Слово содержит кота");
else
    infoTextView.setText("Плохое слово. Нет смысла его использовать");
public CharSequence subSequence (int start, int end) طریقہ کی طرح substring()، لیکن کے لئے استعمال کیا جا سکتا ہے CharSequence. public String substring(int start)اور دیگر اوورلوڈز دیئے گئے سٹرنگ سے حروف کے ساتھ ایک نیا تسلسل/سٹرنگ بناتا ہے جو پوزیشن سے شروع ہو کر startلائن کے آخر تک ہوتا ہے/کیریکٹر پر پوزیشن کے ساتھ ختم ہوتا ہے end۔ نئی لائن میں حروف سے startآخر تک - 1 پر مشتمل ہے، لہذا ہم ایک اور حرف لیتے ہیں۔

String testString = "скотина";

infoTextView.setText(testString.substring(1, 4)); // возвращается кот
public char[] toCharArray() اس سٹرنگ کے حروف کو کریکٹر اری میں کاپی کرتا ہے۔ ایک ہی نتیجہ کے ذریعے حاصل کیا جا سکتا ہے getChars(). دستاویزات اس طریقہ کو استعمال کرنے کی سفارش نہیں کرتی ہیں، تجویز کرتی ہیں charAt()۔

String unusualCat = "Котёнок по имени Гав";

char[] yomoe = unusualCat.toCharArray();
infoTextView.setText(String.valueOf(yomoe[3]));
public String toLowerCase() и другие перегруженные версии سٹرنگ کو لوئر کیس میں تبدیل کرتا ہے۔ ڈیفالٹ لوکل تبادلوں کو کنٹرول کرتا ہے۔ سٹرنگ بلی = "بلی"؛ سٹرنگ لوئر = cat.toLowerCase(); infoTextView.setText(lower); public String toString () ایک تار لوٹاتا ہے۔ خود سٹرنگ کے لیے، جو خود پہلے سے ہی ایک تار ہے، سٹرنگ کو واپس کرنا بے معنی ہے (اوہ، میں نے اسے کیسے موڑا)۔ لیکن یہ طریقہ درحقیقت دوسری کلاسوں کے لیے بہت مفید ہے۔ public String toUpperCase() سٹرنگ کو اپر کیس میں تبدیل کرتا ہے۔ ڈیفالٹ لوکل تبادلوں کو کنٹرول کرتا ہے۔

String cat = "Кот";
String upper = cat.toUpperCase();
infoTextView.setText(upper);
public String trim() سٹرنگ کے شروع اور آخر میں خالی جگہوں کو ہٹاتا ہے۔

String str = "   Hello Kitty  ".trim();
infoTextView.setText(str);
public static String valueOf(long value)اور دیگر اوورلوڈ مواد (نمبر، اشیاء، حروف، کردار کی صفوں) کو ایک تار میں تبدیل کرتا ہے۔

int catAge = 7; // это число

infoTextView.setText(String.valueOf(catAge)); // преобразовано в строку

بے ترتیب تار تیار کرنا

ہم کہتے ہیں کہ ہمیں دیئے گئے حروف کی بے ترتیب تار کی ضرورت ہے۔

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();
}

سٹرنگ موازنہ: equals()یا ==؟

آئیے ایک مثال دیکھتے ہیں۔

String str1 = "Murzik";
String str2 = new String(str1);
boolean isCat = str1 == str2;

infoTextView.setText(str1 + " == " + str2 + " -> " + isCat);
اگرچہ دو متغیرات میں ایک ہی لفظ ہے، لیکن ہم دو مختلف اشیاء کے ساتھ کام کر رہے ہیں اور آپریٹر غلط== واپس آئے گا ۔ ایک بار، جب درخت بڑے تھے، مجھے مختلف ذرائع سے دو تاروں کا موازنہ کرنے کی ضرورت تھی۔ اگرچہ تاریں بالکل ایک جیسی لگ رہی تھیں، آپریٹر کا استعمال کرتے ہوئے موازنہ غلط ثابت ہوا اور میرے لیے تمام کارڈز کو الجھا دیا۔ اور تب ہی مجھے پتہ چلا کہ مجھے استعمال کرنے کی ضرورت ہے ۔ جاوا میں ایک سٹرنگ ایک الگ آبجیکٹ ہے جو کسی اور شے کی طرح نہیں ہوسکتی ہے، حالانکہ اسٹرنگ کا آؤٹ پٹ اسکرین پر ایک جیسا نظر آتا ہے۔ یہ صرف اتنا ہے کہ جاوا، منطقی آپریٹر کے معاملے میں (اس کے ساتھ ساتھ ) اشیاء کے حوالہ جات کا موازنہ کرتا ہے (پرائمیٹوز کے ساتھ کام کرتے وقت ایسا کوئی مسئلہ نہیں ہے): ==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)));
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION