Wat is het verschil tussen string.substring () en string.subsement ()

String.subSequence()heeft de volgende Javadoc:

Retourneert een nieuwe tekenreeks die een subsequentie hiervan is
volgorde.

een aanroeping van deze methode van het formulier

str.subSequence(begin, end)

gedraagt ​​zich op precies dezelfde manier als de aanroep

str.substring(begin, end) 

Deze methode wordt gedefinieerd, zodat de snaarklasse de
ChargeSment Interface.

Kan iemand uitleggen?


1, Autoriteit 100%

Gebruik str.subSequence(begin, end)Retourneert een Chariquate die een alleen-lezen vorm is van de tekenreeks weergegeven als een reeks tekens.
Bijvoorbeeld:

String string = "Hello";
CharSequence subSequence = string.subSequence(0, 5);

Het is alleen gelezen in de zin dat u de charsniet kunt wijzigen in de CharSequencezonder een nieuw exemplaar van een CharSequence.

Als u str.subSequence(begin, end)moet gebruiken, kunt u het resultaat uitzetten naar een String:

String string = "Hello";
String subSequence = (String) string.subSequence(0, 5);

en gebruik de normale Stringoperators zoals subSequence += " World";


2, Autoriteit 188%

subsequence

Volgvolgorde is een veralgemening van subtekenreeks, achtervoegsel en voorvoegsel. Het vinden van de langste tekenreeks die een deelreeks is van twee of meer tekenreeksen staat bekend als het langste veelvoorkomende deelreeksprobleem.

Voorbeeld: de tekenreeks “anna” is een subreeks van de tekenreeks “banaan”:

banana
 || ||
 an na

Subtekenreeks

Een subtekenreeks van een tekenreeks is een voorvoegsel van een achtervoegsel van de tekenreeks, en equivalent een achtervoegsel van een voorvoegsel. Als de ene tekenreeks een subtekenreeks is van een andere, is het ook een deelreeks, wat een meer algemeen concept is.

Voorbeeld: de string “ana” is een substring (en subreeks) van banaan op twee verschillende offsets:

banana
 |||||
 ana||
   |||
   ana

Lees hiermeer.

Maar wat Java betreft, is er geen verschil in het gebruik ervan, zoals duidelijk wordt vermeld in de javadoc. Zoals daar ook wordt vermeld, is de methode subSequencealleen geïmplementeerd in de klasse Stringom deze in overeenstemming te houden met de CharSequence-interface.
En de naam van deze methode is inderdaad gewoon een verkeerde benaming.


Antwoord 3, autoriteit 98%

Om dit te begrijpen, moet u eerst weten wat het verschil is tussen substringen subreeks

subtekenreeksis een doorlopenddeel of subdeel van een tekenreeks

terwijl

volgordeis het deel van een tekenreeks of reeks, die al dan niet doorlopend kan zijn, maar de volgordevan de elementen blijft behouden

Laten we bijvoorbeeld zeggen dat we de volgende strings hebben:

str_a="hello there"
str_b="hello"
str_c="ello th"
str_d="hllo"
str_e="ho hre"
str_f="there hello"

str_bis een substring van str_a, str_cis ook een substring van str_amaar str_dis geen substring van str_aaangezien deze substring niet continuis.

Nu zijn alle substrings subreeksen terwijl de volgorde wordt gehandhaafd.

str_dis een subreeks van str_a, str_eis ook een subreeks van str_aechter str_fis geen subreeks van str_aomdat in dit geval de volgordeniet wordt gehandhaafd.

Voor java is er geen passende verduidelijking over deze methoden in javadoc.


Antwoord 4, autoriteit 50%

In eenvoudige bewoordingen:

Subtekenreeks: Een subtekenreeks is een aaneengesloten reeks tekens binnen een tekenreeks, waarbij andere van belang zijn.

Substring
string
ring

Subreeksen: van een tekenreeks, elk van de tekens, maar in volgorde.

Substring
u s i
s b t i n g
r g

Antwoord 5, autoriteit 8%

Substrings zijn opeenvolgende subreeksen.

Voor reeks abc hebben we bijvoorbeeld

substrings: a, ab, abc, b, bc, c, and the empty substring;
subsequences: a, b, ab, c, ac, bc, abc, and the empty subsequence.

Wanneer de letters worden herhaald, zullen sommige substrings en sub-dequeces er hetzelfde uitzien.


6, Autoriteit 4%

Als u naar de reeksbron kijkt, ziet u dat de substring daadwerkelijk roept. Het enige dat het anders doet dan substring is het de tekenreeks werpt naar een aankondiging.


7

eigenlijk is het gewoon wat wordt geretourneerd. Één een string en de andere A-aanwijzering (die je als een tekenreeks kunt casten).
U zou de subsequentie gebruiken wanneer u een alvaringsysteem van het chariabiliteit nodig heeft.

Other episodes