1. Paghahambing ng mga string

Ang isa sa mga pinaka-karaniwang operasyon na may mga string ay paghahambing. Ang String class ay may higit sa sampung iba't ibang pamamaraan na ginagamit upang ihambing ang isang string sa isa pang string. Sa ibaba ay titingnan natin ang pito sa mga pangunahing.

Paraan Paglalarawan
boolean equals(String str)
Itinuturing na pantay ang mga string kung magkatugma ang lahat ng character nila.
boolean equalsIgnoreCase(String str)
Naghahambing ng mga string, binabalewala ang case ng mga titik (binalewala kung ito ay uppercase o lowercase)
int compareTo(String str)
Inihahambing ang mga string sa lexicographically. Nagbabalik ng 0 kung pantay ang mga string. Ang return value ay mas mababa sa zero kung ang kasalukuyang string ay mas mababa sa string parameter. Ang return value ay mas malaki kaysa sa kung ang kasalukuyang string ay mas malaki kaysa sa string parameter.
int compareToIgnoreCase(String str)
Inihahambing ang mga string sa lexicographically habang binabalewala ang case. Nagbabalik ng 0 kung pantay ang mga string. Negatibo ang return value kung ang kasalukuyang string ay mas mababa sa string parameter. Ang return value ay mas malaki kaysa sa kung ang kasalukuyang string ay mas malaki kaysa sa string parameter.
boolean regionMatches(int toffset, String str, int offset, int len)
Naghahambing ng mga bahagi ng mga string
boolean startsWith(String prefix)
Sinusuri kung ang kasalukuyang string ay nagsisimula sa stringprefix
boolean endsWith(String suffix)
Sinusuri kung ang kasalukuyang string ay nagtatapos sa stringsuffix

Sabihin nating gusto mong magsulat ng program na humihingi sa user ng path patungo sa isang file at pagkatapos ay susuriin ang uri ng file batay sa extension nito. Ang code ng naturang programa ay maaaring magmukhang ganito:

Code Mga Tala
Scanner console = new Scanner(System.in);
String path = console.nextLine();

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))
{
   System.out.println("This is a jpeg!");
}
else if (path.endsWith(".htm") || path.endsWith(".html"))
{
   System.out.println("This is an HTML page");
}
else if (path.endsWith(".doc") || path.endsWith(".docx"))
{
   System.out.println("This is a Word document");
}
else
{
   System.out.println("Unknown format");
}
Lumikha ng isang Scannerbagay
Magbasa ng isang linya mula sa console

Suriin kung ang string pathay nagtatapos sa ibinigay na string


2. Naghahanap ng mga substring

Matapos ihambing ang mga string, ang pangalawang pinakasikat na operasyon ay ang paghahanap ng isang string sa loob ng isa pa. Ang klase ng String ay mayroon ding ilang mga pamamaraan para dito:

Paraan Paglalarawan
int indexOf(String str)
Hinahanap ang string strsa kasalukuyang string. Ibinabalik ang index ng unang character ng unang paglitaw.
int indexOf(String str, int index)
Hinahanap ang string strsa kasalukuyang string, nilalaktawan ang mga unang indexcharacter. Ibinabalik ang index ng pangyayari.
int lastIndexOf(String str)
Hinahanap ang string strsa kasalukuyang string, simula sa dulo. Ibinabalik ang index ng unang paglitaw.
int lastIndexOf(String str, int index)
Hinahanap ang string strsa kasalukuyang string mula sa dulo, laktawan ang mga unang indexcharacter.
boolean matches(String regex)
Sinusuri kung ang kasalukuyang string ay tumutugma sa isang pattern na tinukoy ng isang regular na expression.

Ang indexOf(String)at indexOf(String, index)mga pamamaraan ay kadalasang ginagamit sa kumbinasyon. Hinahayaan ka ng unang paraan na mahanap ang unang paglitaw ng naipasa na substring sa kasalukuyang string. At hinahayaan ka ng pangalawang paraan na mahanap ang pangalawa, pangatlo, atbp. na mga pangyayari sa pamamagitan ng paglaktaw sa mga unang character ng index.

Ipagpalagay na mayroon kaming url tulad ng " https://domain.com/about/reviews ", at gusto naming palitan ang domain name ng " codegym.cc ". Ang mga url ay maaaring magkaroon ng lahat ng uri ng iba't ibang domain name, ngunit alam namin ang sumusunod:

  • Ang domain name ay pinangungunahan ng dalawang forward slash — " //"
  • Ang domain name ay sinusundan ng isang pasulong na slash — " /"

Narito kung ano ang magiging hitsura ng code para sa naturang programa:

Code Mga Tala
Scanner console = new Scanner(System.in);
String path = console.nextLine();

int index = path.indexOf("//");
int index2 = path.indexOf("/", index + 2);

String first = path.substring(0, index + 2);
String last = path.substring(index2);

String result = first + "codegym.cc" + last;
System.out.println(result);
Lumikha ng bagay na Scanner
Magbasa ng linya mula sa console

Kunin ang index ng unang paglitaw ng string " //"
Nakukuha namin ang index ng unang paglitaw ng string /, ngunit tumingin lamang pagkatapos ng paglitaw ng mga character //.
Nakukuha namin ang string mula sa simula hanggang sa dulo ng mga character //
Nakukuha namin ang string mula /sa dulo.

Pinagsasama namin ang mga string at ang bagong domain.

Ang lastIndexOf(String)at lastIndexOf(String, index)mga pamamaraan ay gumagana sa parehong paraan, tanging ang paghahanap ay isinasagawa mula sa dulo ng string hanggang sa simula.



3. Paglikha ng mga substring

Bilang karagdagan sa paghahambing ng mga string at paghahanap ng mga substring, may isa pang napakasikat na aksyon: pagkuha ng substring mula sa isang string. Habang nangyayari ito, ipinakita sa iyo ng nakaraang halimbawa ang isang substring()method call na nagbalik ng bahagi ng isang string.

Narito ang isang listahan ng 8 mga pamamaraan na nagbabalik ng mga substring mula sa kasalukuyang string:

Paraan Paglalarawan
String substring(int beginIndex, int endIndex)
Ibinabalik ang substring na tinukoy ng hanay ng index beginIndex..endIndex.
String repeat(int count)
Inuulit ang kasalukuyang string ng n beses
String replace(char oldChar, char newChar)
Nagbabalik ng bagong string: pinapalitan ang character oldCharng characternewChar
String replaceFirst(String regex, String replacement)
Pinapalitan ang unang substring, na tinukoy ng isang regular na expression, sa kasalukuyang string.
String replaceAll(String regex, String replacement)
Pinapalitan ang lahat ng mga substring sa kasalukuyang string na tumutugma sa regular na expression.
String toLowerCase()
Kino-convert ang string sa lowercase
String toUpperCase()
Kino-convert ang string sa uppercase
String trim()
Tinatanggal ang lahat ng puwang sa simula at dulo ng isang string

Narito ang isang buod ng mga magagamit na pamamaraan:

substring(int beginIndex, int endIndex)paraan

Ang substringpamamaraan ay nagbabalik ng bagong string na binubuo ng mga character sa kasalukuyang string, simula sa character na may index beginIndexat nagtatapos sa endIndex. Tulad ng lahat ng mga agwat sa Java, ang karakter na may index endIndexay hindi kasama sa pagitan. Mga halimbawa:

Code Resulta
"Hellos".substring(0, 3);
"Hel"
"Hellos".substring(1, 4);
"ell"
"Hellos".substring(1, 6);
"ellos"
"Hellos".substring(1);
"ellos"

Kung ang endIndexparameter ay hindi tinukoy (na posible), ang substring ay kinuha mula sa character sa beginIndex hanggang sa dulo ng string.

repeat(int n)paraan

Ang paraan ng pag-uulit ay inuulit lang ang kasalukuyang nmga oras ng string. Halimbawa:

Code Resulta
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)paraan

Ang replace()pamamaraan ay nagbabalik ng isang bagong string kung saan ang lahat ng mga character oldCharay pinapalitan ng character newChar. Hindi nito binabago ang haba ng string. Halimbawa:

Code Resulta
"Programming".replace('Z', 'z');
"Programming"
"Programming".replace('g', 'd');
"Prodrammind"
"Programming".replace('a', 'e');
"Progremming"
"Programming".replace('m', 'w');
"Prograwwing"

replaceFirst()at replaceAll()mga pamamaraan

Pinapalitan ng replaceAll()pamamaraan ang lahat ng paglitaw ng isang substring sa isa pa. Pinapalitan ng replaceFirst()pamamaraan ang unang paglitaw ng naipasa na substring ng tinukoy na substring. Ang string na papalitan ay tinukoy ng isang regular na expression. Susuriin natin ang mga regular na expression sa Java Multithreading quest.

Mga halimbawa:

Code Resulta
"Good news everyone!".replaceAll("e.", "EX");
"Good nEXs EXEXyonEX"
"Good news everyone!".replaceAll("o.", "-o-");
"G-o-d news every-o-e!"
"Good news everyone!".replaceFirst("e.", "EX");
"Good nEXs everyone!"
"Good news everyone!".replaceFirst("o.", "-o-");
"G-o-d news everyone!"

toLowerCase() and toUpperCase()paraan

Nalaman namin ang mga pamamaraang ito noong una naming natutunan ang tungkol sa pagtawag sa mga pamamaraan ng Stringklase.

trim()paraan

Ang trim()pamamaraan ay nag-aalis ng mga nangunguna at sumusunod na mga puwang mula sa isang string. Hindi hinahawakan ang mga puwang na nasa loob ng isang string (ibig sabihin, hindi sa simula o dulo). Mga halimbawa:

Code Resulta
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"