JavaRush /Блоги Java /Random-TG /Аломатҳои фирорӣ

Аломатҳои фирорӣ

Дар гурӯҳ нашр шудааст
Салом! Дар лексияҳои қаблӣ, мо аллакай бо сатрҳо шинос шуда будем, ки онҳоро синф дар Java муаррифӣ мекунад String. Тавре ки шумо эҳтимол дар ёд доред, сатр пайдарпаии аломатҳост. Аломатҳо метавонанд ҳама чиз бошанд - ҳарфҳо, рақамҳо, аломатҳои пунктуатсия ва ғайра. Муҳим он аст, ки ҳангоми сохтани сатр тамоми пайдарпаӣ ба нохунак дохил карда мешавад:
public class Main {
   public static void main(String[] args) {
       String sasha = new String ("Меня зовут Саша, мне 20 лет!");
   }
}
Аммо чӣ мешавад, агар мо бояд сатре эҷод кунем, ки дар дохor он иқтибосҳо низ мавҷуд аст? Масалан, мо мехоҳем ба ҷаҳон дар бораи китоби дӯстдоштаамон нақл кунем:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - "Сумерки" Стефани Майер");
   }
}
Ба назар чунин мерасад, ки мураттиб аз чизе норозӣ аст! Ба фикри шумо, сабаби хатогӣ дар чист ва чаро он махсусан бо иқтибосҳо рух додааст? Гап дар он аст, ки компилятор иқтибосҳоро ба таври қатъӣ муайян мекунад, яъне сатрро дар онҳо мепайвандад. Ва ҳар боре, ки ӯ персонажеро мебинад ", интизор аст, ки ҳамон як персонаж барои он пайравӣ кунад ва дар байни онҳо матни сатр мавҷуд бошад, ки ӯ, мураттиб бояд эҷод кунад. Дар ҳолати мо, нохунакҳо дар атрофи калимаи "Twilight" дар дохor нохунакҳои дигар ҷойгиранд . Ва ҳангоме ки мураттиб ба ин порчаи матн меояд, он танҳо намефаҳмад, ки онҳо аз он чӣ мехоҳанд. Чунин ба назар мерасад, ки иқтибос вуҷуд дорад, ки маънои онро дорад, ки он бояд сатр эҷод кунад. Аммо ӯ аллакай ин корро мекунад! Махз хамин сабаб аст. Оддӣ карда гӯем, дар ин лаҳза компилятор он чизеро, ки аз он мехоҳанд, нодуруст мефаҳмад. "Иқтибоси дигар? Оё ин як навъ хато аст? Ман аллакай сатр эҷод карда истодаам! Ё ман бояд як сатри дигар эҷод кунам? Uhhh...:/" Мо бояд ба тартибдиҳанда фаҳмонем, ки вақте иқтибос барои он фармон аст (" сатр эҷод кунед!"), ва вақте ки он рамзи оддӣ аст ("калимаи "Twilight" -ро бо нохунакҳо нишон диҳед!"). Барои ноил шудан ба ин, Java фирор кардани аломатро истифода мебарад . Ин бо истифода аз аломати махсус анҷом дода мешавад. Монанди ин: \. Дар ҳаёти оддӣ онро "хатти ақибмонда" меноманд, аммо дар Java онро (дар якҷоягӣ бо аломати раҳошуда) пайдарпайии фирор номида мешавад . Масалан, \"ин ҷост - пайдарпаии назорат барои намоиши нохунакҳо дар экран. Пас аз дучор шудан бо чунин сохтмон дар дохor codeи шумо, компилятор мефаҳмад, ки ин танҳо аломати "иқтибос" аст, ки бояд дар экран нишон дода шавад. Биёед кӯшиш кунем, ки рамзи худро бо китоб тағир диҳем:
public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - \"Сумерки\" Стефани Майер");
       System.out.println(myFavoriteBook);
   }
}
Мо аз ду иқтибоси "ботинӣ" бо як \. Биёед кӯшиш кунем, ки усулро иҷро кунем main()... Натиҷаи консол:

Моя любимая книга - "Сумерки" Стефани Майер
Аҷоиб, code маҳз ҳамон тавре ки лозим буд, кор кард! Иқтибосҳо аз ягона ҳолате дуранд, ки ба мо шояд фирор кардани аломат лозим шавад. Масалан, мо мехостем ба касе дар бораи кори худ нақл кунем:
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
Ва боз хато! Оё шумо аллакай тахмин карда метавонед, ки сабаб чист? Компилятор боз намефаҳмад, ки чӣ кор кунад. Дар ниҳоят, рамз барои ӯ ҷуз як пайдарпаии назорат\ чизи дигаре нест ! Он интизор аст, ки пас аз хати слэш бояд як аломате бошад, ки он бояд бо ягон роҳи махсус тафсир карда шавад (масалан, нохунак). Аммо, дар ин ҷо ҳарфҳои муқаррарӣ пайравӣ мекунанд. Ҳамин тавр, компилятор боз ошуфтааст. Чӣ бояд кард? Айнан ҳамон дафъаи гузашта: танҳо ба мо як чизи дигар илова кунед ! \\\
public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
Биёед бубинем, ки аз ин чӣ мебарояд: Натиҷаи консол:

Мои рабочие файлы лежат в папке D:\Work Projects\java
Супер! Компилятор фавран муайян кард, ки ин \рамзҳои оддӣ ҳастанд, ки бояд дар якҷоягӣ бо дигарон ба консол бароварда шаванд. Дар Java чанд пайдарпаии фирор вуҷуд дорад. Ин аст рӯйхати пурраи онҳо:
  • \t аломати ҷадвал.
  • \b аломати бозгашт дар матн як қадам ба ақиб ё нест кардани як аломат дар сатр (backspace).
  • \n аломати сатри нав.
  • \r аломати бозгашти вагон.
  • \f иҷро кардани саҳифа.
  • \' аломати иқтибос ягона.
  • \" аломати ду иқтибос.
  • \\аломати баръакс (\).
Ҳамин тариқ, агар компилятор дар матн бо аломате рӯбарӯ шавад \n, вай мефаҳмад, ки ин на танҳо як аломат ва ҳарфест, ки бояд ба консол бароварда шавад, балки фармони махсус барои он - "хатро вайрон кунед!" Масалан, ин метавонад барои мо муфид бошад, агар мо мехоҳем як пораи шеърро ба консол бароварем:
public class Main {
   public static void main(String[] args) {
       String borodino = new String ("Скажи-ка, дядя, \nВедь не даром \nМосква, спаленная пожаром, \nФранцузу отдана?");
       System.out.println(borodino);
   }
}
Ва ин аст он чизе ки мо ба даст овардем: Натиҷаи консол:

Скажи-ка, дядя, 
Ведь не даром 
Москва, спаленная пожаром, 
Французу отдана?
Маҳз он чизе ки лозим аст! Мураттиб пайдарпаии фирорро эътироф кард ва як порчаи оятро дар 4 сатр баровард.

Юниcode

Боз як мавзӯи муҳиме, ки шумо бояд дар бораи фирор кардани аломатҳо донед, Юниcode мебошад . Юниcode стандарти рамзгузории аломатҳост, ки аломатҳои қариб ҳамаи забонҳои хаттии ҷаҳонро дар бар мегирад. Ба ибораи дигар, ин рӯйхати рамзҳои махсус аст, ки дар он рамзи қариб ҳар як аломат аз ҳар забон мавҷуд аст! Табиист, ки ин рӯйхат хеле калон аст ва ҳеҷ кас онро аз ёд намегирад :) Агар шумо ба он таваҷҷӯҳ доред, ки он аз куҷо пайдо шуд ва чаро он лозим буд, мақолаи иттилоотиро дар бораи Habrahabr хонед . Ҳама рамзҳои аломатҳо дар Юниcode "ҳарф u+ рақами шонздаҳӣ" мебошанд. Масалан, рамзи машҳури ҳуқуқи муаллиф бо рамзи u00A9 нишон дода шудааст . Ҳамин тавр, агар ба шумо ҳангоми кор бо матн дар Java лозим ояд, ки ин аломатро истифода баред, шумо метавонед онро дар матни худ гурезед! Масалан, мо мехоҳем ба ҳама хабар диҳем, ки ин лексия аз ҷониби JavaRush ҳуқуқи муаллифӣ мебошад:
public class Main {
   public static void main(String[] args) {
       System.out.println("Лекция \"Экранирование символов\", \u00A9 2018 Javarush");
   }
}
Натиҷаи консол:

Лекция "Экранирование символов", © 2018 Javarush
Аҷоиб, ҳама чиз кор кард! Аммо аломатҳои махсус ҳама чиз нестанд! Бо истифода аз Юниcode ва фирор кардани аломат, шумо метавонед матни бо забонҳои гуногун навишташударо дар як вақт рамзгузорӣ кунед. Ва ҳатто дар якчанд лаҳҷаҳои гуногуни як забон!
public class Main {
   public static void main(String[] args) {

       System.out.println("\u041c\u0430\u0301\u043e " +
               "\u0426\u0437\u044d\u0434\u0443\u0301\u043d " +
               "\u0028\u043a\u0438\u0442\u002e \u0442\u0440\u0430\u0434\u002e " +
               "\u6bdb\u6fa4\u6771\u002c \u0443\u043f\u0440\u002e " +
               "\u6bdb\u6cfd\u4e1c\u002c \u043f\u0438\u043d\u044c\u0438\u043d\u044c\u003a " +
               "\u004d\u00e1\u006f \u005a\u00e9\u0064\u014d\u006e\u0067\u0029 " +
               "\u2014 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 " +
               "\u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 " +
               "\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 " +
               "\u0434\u0435\u044f\u0442\u0435\u043b\u044c \u0058\u0058 \u0432\u0435\u043a\u0430\u002c " +
               "\u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a " +
               "\u043c\u0430\u043e\u0438\u0437\u043c\u0430\u002e");
   }
}
Натиҷаи консол:

Ма́о Цзэду́н (кит. трад. 毛澤東, упр. 毛泽东, пиньинь: Máo Zédōng) — китайский государственный и политический деятель XX века, главный теоретик маоизма.
Дар ин мисол, бо донистани рамзҳои ҳарфҳо, мо сатри иборат аз алифбои сириллик ва се (!) намуди гуногуни аломатҳои чинӣ – классикӣ, соддакардашуда ва лотинӣ (пининь) навиштем. Ин аст, асосан! Ҳоло шумо дар бораи фирор кардани аломатҳо кофӣ медонед, то ин асбобро дар кори худ истифода баред :) Агар ҳама чиз комилан равшан набошад, ман ба шумо маслиҳат медиҳам, ки ин мақоларо хонед : ин иловаи хуб хоҳад буд.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION