Әдісінің ішкі жолы () берілген жолдың подстріні болып табылатын жаңа жолды қайтарады. Java String substring () әдісі берілген индекстер негізінде берілген жолдың ішкі жолын алу үшін пайдаланылады. Бұл әдісдің екі нұсқасы бар. Осы нұсқаулықта мысалдарды қолданып, осы әдісті қалай пайдалану керектігін көреміз.
Жолдың астын сызу () әдісінің нұсқалары
Substring () әдісін пайдаланудың екі жолы бар -
1. Бастапқы индексті ғана өткізген кезде:
Жолдың ішкі жолы (int beginIndex)
Бастапқы жолды көрсетілген индекстен бастап қайтарады, яғни beginIndex және жолдың соңында болған таңбаға дейін созылады. Мысалы - "Chaitanya".substring(2)
"aitanya"
қайтарады. StartIndex инклюзивті, сондықтан индекс 2-дегі таңба подстрокке қосылады. Бұл әдіс IndexOutOfBoundsException
Егер beginIndex String ұзындығынан (startIndex <0 ||> String ұзындығы) нөлден немесе үлкенірек болса.
2. Индекстердің екеуін де, индекстің және аяқталу индексін де бастаған кезде:
Жолдың ішкі жолы (int beginningIndex, int endIndex)
Бұл жолдың ішкі жолы болып табылатын жаңа жолды береді. Ішкі жол көрсетілген startIndex-та басталады және endIndex индексінде 1 таңбаға дейін созылады. Осылайша, ішкі жолдың ұзындығы endIndex-beginIndex болып табылады. Басқаша айтқанда, beginIndex инклюзивті деп айтуға болады және endIndex субстрейді алу кезінде айрықша болып табылады.
Мысалы - "Chaitanya".substring(2,5)
"ait"
қайтарады. IndexOutOfBoundsException
Егер beginIndex
нөлден аз болса немесе beginIndex > endIndex
OR endIndex
String ұзындығынан үлкен болса.
Java String substring () мысалы
Енді substring () әдісінің негіздерін түсінеміз, бұл әдісті қолдануды түсіну үшін мысал келтіріңіз.
Мұнда біз str
string бар және substring () әдісін пайдаланып, осы жолдың ішкі жолын табамыз.
қоғамдық класс SubStringExample {public static void main (Жол аралдары []) {String str = жаңа String («жылдам қоңыр кофе жалған иттен секіреді»);System.out.println («Индекс 15-тен басталатын ішкі жол:»);System.out.println (str.substring (15));System.out.println («15 индексінен басталатын және соңында 20: аяқталатын ішкі жол»);System.out.println (str.substring (15, 20));} }
Шығару:
Индекс 15-тен басталатын ішкі жол: жалқау иттен секіреді Индекс 15-тен басталатын және 20: секіру
Ескерту: Көптеген халықтар екінші әдіс шақыруындағы қайтарылған ішкі бөліктің секіріп өтудің орнына секіру болуы керек деп шатыстырады, себебі қайтарылған ішкі жолдың ұзындығы endIndex-beginIndex болуы керек, біздің мысалда beginIndex 15 және endIndex 20, сондықтан ұзындығы қайтарылған ішкі жол 20-15 = 5 болуы керек. Дұрыс жауап - «секіру», себебі секіруден бұрын бос орын бар, сондықтан «секіру» ұзындығының ұзындығы 5 (кеңістікті қоса).
Шатыстылықты одан әрі болдырмау үшін мен осы әдісті көруге оңай болатын тағы бір мысалмен бөлісемін.
String substring () әдісінің тағы бір мысалы
қоғамдық класс JavaExample {public static void main (Жол аралдары []) { String mystring = жаңа String («Java үйренуге мүмкіндік береді»); / * Индекс 0-ден бастап, массивтерде көргенімізге ұқсас * 0 индексіндегі таңба s және индекс 1 - u, яғни beginIndex болғандықтан * Қосулы, substring char 'u' * / System.out.println («substring (1):» + mystring.substring (1)); / * Біз beginIndex және endIndex екеуін де жіберген кезде, қайтарылған ұзындығы * substring әрдайым endIndex - beginIndex, бұл мысалда 3-1 = 2 болып табылады * Айтуынша, beginIndex-тен айырмашылығы endIndex эксклюзивті болып табылады * не индексінің 1-дегі индексі 3-дегі таңба болса, субстратта неге болады? * жоқ. * / System.out.println («подстрок (1,3):» + mystring.substring (1,3));} }
Шығару:
Анықтама: Javadoc substring ()
Менің ойымша, екінші нәтиже - «секіру»
Мен «секіру» сөзінің алдында кейіпкер ретінде қарастырсақ, «секіру» деп ойладым.
Жоғарыда түсіндірілгендей, «chaitanya» .substring (2,5) және нәтижесі «a (2) i (3) t (4)», сондықтан бесінші таңба алынбайды?
ақ кеңістікті санайды, екіншіден, «s» аяғында 20 ұшын, сондықтан java бір символды аз көрсетеді. нәтиже секіреді.
Мысал:
abc
012
(0,1) эксклюзивті соңғы нүктені көрсетеді.
Дұрыс емес нәтиже - бұрын бос орынмен «секіру»
жаман мысал = (
кеңістік өте қиын, мұндай жаңылыс
.Substring (x, y) пайдаланған кезде, x индексі инклюзивті және y индексі ерекше, сондықтан «jump».
тұжырымдаманы ұмытып кеткен болатын
мысал көп көмектесті, рахмет!
Жинақтау :
- O базалық индексі
- Ауқым [beginIndex, endIndex [
- Мысалы: «abc 123» .substring (1,5) => «bc 1»
1) нәтиже өте пайдалы емес, «секіруге» дейінгі орын шатастырады
2) оқулықтар жасаған кезде, егжей-тегжейлі түсіндірулерді беру керек. . Сіз «индексінен бастап 20-дан басталатын және 20-ға дейін аяқталатын» деп айтқан кезде, көптеген адамдар индекстің 20-дағы таңбаны қамтитынын болжайды. Ең бастысы, подстрок туралы айту керек, бұл шекаралар [beginIndex, endIndex), яғни бірінші индекс енгізілген, екіншісі - жоқ.
Сіздің күш-жігеріңізді бағалаңыз, бірақ кейде жаңадан бастағандарға қарапайым түсініктер қажет
Сәлеметсіздер ... Жақсы мысал, ол кеңістіктерді де есептейді және нәтиже береді.
java құжаттамасын қарап шығуды қалауыңыз мүмкін (мұнда түпкі индекс қалай өңделеді: мән-1 ретінде немесе басқаша айтқанда «тек»):
public String ішкі жолы (int beginIndex, int endIndex)
Бұл жолдың ішкі жолы болып табылатын жаңа жолды береді. Ішкі жол көрсетілген startIndex-та басталады және endIndex индексінде 1 таңбаға дейін созылады. Осылайша, ішкі жолдың ұзындығы endIndex-beginIndex болып табылады.
Мысалдар:
«Гамбургер» .substring (4, 8) қайтарады «шақыру»
«Smiles» .substring (1, 5) қайтарады «mile»
Параметрлер:
beginIndex - бас индексі, оның ішінде.
endIndex - аяқталу индексі, ерекше.
Қайтару:
көрсетілген подстрок.
Қалдырады:
IndexOutOfBoundsException - егер beginIndex теріс болса немесе endIndex осы String нысанының ұзындығынан үлкен болса немесе beginIndex endIndex-тен үлкен болса.
https://docs.oracle.com/javase/7/docs/api/java/> бөлімін қараңыз
Көптеген жылдар бойы көптеген компьютер тілдері басталу индексін және ұзындығын параметрлер ретінде пайдаланды. Java қандай да бір себептермен бастапқы және аяқталу индексін қолдануға шешім қабылдады, ол іс жүзінде кейіпкерлерді басынан аяғына дейін қайтарады - 1. Өзім осы команданың қасақана іске асырылуы деп ойлаймын, Java-ның жасушылары тарапынан массивті ми шабуылы сияқты көрінеді. Java қазір де танымал болғандықтан, бұл функция бірнеше негізгі жолмен жұмыс істеп жатыр, енді бұл глупая іске бірнеше басқа тілде қайталанған.
Жақсы көмектесті