12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135 |
- :github_url: hide
- .. DO NOT EDIT THIS FILE!!!
- .. Generated automatically from Godot engine sources.
- .. Generator: https://github.com/godotengine/godot/tree/4.0/doc/tools/make_rst.py.
- .. XML source: https://github.com/godotengine/godot/tree/4.0/doc/classes/String.xml.
- .. _class_String:
- String
- ======
- A built-in type for strings.
- .. rst-class:: classref-introduction-group
- Description
- -----------
- This is the built-in string Variant type (and the one used by GDScript). Strings may contain any number of Unicode characters, and expose methods useful for manipulating and generating strings. Strings are reference-counted and use a copy-on-write approach (every modification to a string returns a new **String**), so passing them around is cheap in resources.
- Some string methods have corresponding variations. Variations suffixed with ``n`` (:ref:`countn<class_String_method_countn>`, :ref:`findn<class_String_method_findn>`, :ref:`replacen<class_String_method_replacen>`, etc.) are **case-insensitive** (they make no distinction between uppercase and lowercase letters). Method variations prefixed with ``r`` (:ref:`rfind<class_String_method_rfind>`, :ref:`rsplit<class_String_method_rsplit>`, etc.) are reversed, and start from the end of the string, instead of the beginning.
- \ **Note:** In a boolean context, a string will evaluate to ``false`` if it is empty (``""``). Otherwise, a string will always evaluate to ``true``.
- .. rst-class:: classref-introduction-group
- Tutorials
- ---------
- - :doc:`GDScript format strings <../tutorials/scripting/gdscript/gdscript_format_string>`
- .. rst-class:: classref-reftable-group
- Constructors
- ------------
- .. table::
- :widths: auto
- +-----------------------------+-----------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`String<class_String_constructor_String>` **(** **)** |
- +-----------------------------+-----------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`String<class_String_constructor_String>` **(** :ref:`String<class_String>` from **)** |
- +-----------------------------+-----------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`String<class_String_constructor_String>` **(** :ref:`NodePath<class_NodePath>` from **)** |
- +-----------------------------+-----------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`String<class_String_constructor_String>` **(** :ref:`StringName<class_StringName>` from **)** |
- +-----------------------------+-----------------------------------------------------------------------------------------------------+
- .. rst-class:: classref-reftable-group
- Methods
- -------
- .. table::
- :widths: auto
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`begins_with<class_String_method_begins_with>` **(** :ref:`String<class_String>` text **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`bigrams<class_String_method_bigrams>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`bin_to_int<class_String_method_bin_to_int>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`c_escape<class_String_method_c_escape>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`c_unescape<class_String_method_c_unescape>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`capitalize<class_String_method_capitalize>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`casecmp_to<class_String_method_casecmp_to>` **(** :ref:`String<class_String>` to **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`chr<class_String_method_chr>` **(** :ref:`int<class_int>` char **)** |static| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`contains<class_String_method_contains>` **(** :ref:`String<class_String>` what **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`count<class_String_method_count>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0, :ref:`int<class_int>` to=0 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`countn<class_String_method_countn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0, :ref:`int<class_int>` to=0 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`dedent<class_String_method_dedent>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`ends_with<class_String_method_ends_with>` **(** :ref:`String<class_String>` text **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`find<class_String_method_find>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`findn<class_String_method_findn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`format<class_String_method_format>` **(** :ref:`Variant<class_Variant>` values, :ref:`String<class_String>` placeholder="{_}" **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`get_base_dir<class_String_method_get_base_dir>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`get_basename<class_String_method_get_basename>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`get_extension<class_String_method_get_extension>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`get_file<class_String_method_get_file>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`get_slice<class_String_method_get_slice>` **(** :ref:`String<class_String>` delimiter, :ref:`int<class_int>` slice **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`get_slice_count<class_String_method_get_slice_count>` **(** :ref:`String<class_String>` delimiter **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`get_slicec<class_String_method_get_slicec>` **(** :ref:`int<class_int>` delimiter, :ref:`int<class_int>` slice **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`hash<class_String_method_hash>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`hex_to_int<class_String_method_hex_to_int>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`humanize_size<class_String_method_humanize_size>` **(** :ref:`int<class_int>` size **)** |static| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`indent<class_String_method_indent>` **(** :ref:`String<class_String>` prefix **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`insert<class_String_method_insert>` **(** :ref:`int<class_int>` position, :ref:`String<class_String>` what **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_absolute_path<class_String_method_is_absolute_path>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_empty<class_String_method_is_empty>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_relative_path<class_String_method_is_relative_path>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_subsequence_of<class_String_method_is_subsequence_of>` **(** :ref:`String<class_String>` text **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_subsequence_ofn<class_String_method_is_subsequence_ofn>` **(** :ref:`String<class_String>` text **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_valid_filename<class_String_method_is_valid_filename>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_valid_float<class_String_method_is_valid_float>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_valid_hex_number<class_String_method_is_valid_hex_number>` **(** :ref:`bool<class_bool>` with_prefix=false **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_valid_html_color<class_String_method_is_valid_html_color>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_valid_identifier<class_String_method_is_valid_identifier>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_valid_int<class_String_method_is_valid_int>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`is_valid_ip_address<class_String_method_is_valid_ip_address>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`join<class_String_method_join>` **(** :ref:`PackedStringArray<class_PackedStringArray>` parts **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`json_escape<class_String_method_json_escape>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`left<class_String_method_left>` **(** :ref:`int<class_int>` length **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`length<class_String_method_length>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`lpad<class_String_method_lpad>` **(** :ref:`int<class_int>` min_length, :ref:`String<class_String>` character=" " **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`lstrip<class_String_method_lstrip>` **(** :ref:`String<class_String>` chars **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`match<class_String_method_match>` **(** :ref:`String<class_String>` expr **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`matchn<class_String_method_matchn>` **(** :ref:`String<class_String>` expr **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`md5_buffer<class_String_method_md5_buffer>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`md5_text<class_String_method_md5_text>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`naturalnocasecmp_to<class_String_method_naturalnocasecmp_to>` **(** :ref:`String<class_String>` to **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`nocasecmp_to<class_String_method_nocasecmp_to>` **(** :ref:`String<class_String>` to **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`num<class_String_method_num>` **(** :ref:`float<class_float>` number, :ref:`int<class_int>` decimals=-1 **)** |static| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`num_int64<class_String_method_num_int64>` **(** :ref:`int<class_int>` number, :ref:`int<class_int>` base=10, :ref:`bool<class_bool>` capitalize_hex=false **)** |static| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`num_scientific<class_String_method_num_scientific>` **(** :ref:`float<class_float>` number **)** |static| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`num_uint64<class_String_method_num_uint64>` **(** :ref:`int<class_int>` number, :ref:`int<class_int>` base=10, :ref:`bool<class_bool>` capitalize_hex=false **)** |static| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`pad_decimals<class_String_method_pad_decimals>` **(** :ref:`int<class_int>` digits **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`pad_zeros<class_String_method_pad_zeros>` **(** :ref:`int<class_int>` digits **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`path_join<class_String_method_path_join>` **(** :ref:`String<class_String>` file **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`repeat<class_String_method_repeat>` **(** :ref:`int<class_int>` count **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`replace<class_String_method_replace>` **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`replacen<class_String_method_replacen>` **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`rfind<class_String_method_rfind>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`rfindn<class_String_method_rfindn>` **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`right<class_String_method_right>` **(** :ref:`int<class_int>` length **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`rpad<class_String_method_rpad>` **(** :ref:`int<class_int>` min_length, :ref:`String<class_String>` character=" " **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`rsplit<class_String_method_rsplit>` **(** :ref:`String<class_String>` delimiter="", :ref:`bool<class_bool>` allow_empty=true, :ref:`int<class_int>` maxsplit=0 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`rstrip<class_String_method_rstrip>` **(** :ref:`String<class_String>` chars **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`sha1_buffer<class_String_method_sha1_buffer>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`sha1_text<class_String_method_sha1_text>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`sha256_buffer<class_String_method_sha256_buffer>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`sha256_text<class_String_method_sha256_text>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`float<class_float>` | :ref:`similarity<class_String_method_similarity>` **(** :ref:`String<class_String>` text **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`simplify_path<class_String_method_simplify_path>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`split<class_String_method_split>` **(** :ref:`String<class_String>` delimiter="", :ref:`bool<class_bool>` allow_empty=true, :ref:`int<class_int>` maxsplit=0 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedFloat64Array<class_PackedFloat64Array>` | :ref:`split_floats<class_String_method_split_floats>` **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=true **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`strip_edges<class_String_method_strip_edges>` **(** :ref:`bool<class_bool>` left=true, :ref:`bool<class_bool>` right=true **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`strip_escapes<class_String_method_strip_escapes>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`substr<class_String_method_substr>` **(** :ref:`int<class_int>` from, :ref:`int<class_int>` len=-1 **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`to_ascii_buffer<class_String_method_to_ascii_buffer>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`to_camel_case<class_String_method_to_camel_case>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`float<class_float>` | :ref:`to_float<class_String_method_to_float>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`to_int<class_String_method_to_int>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`to_lower<class_String_method_to_lower>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`to_pascal_case<class_String_method_to_pascal_case>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`to_snake_case<class_String_method_to_snake_case>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`to_upper<class_String_method_to_upper>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`to_utf16_buffer<class_String_method_to_utf16_buffer>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`to_utf32_buffer<class_String_method_to_utf32_buffer>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`to_utf8_buffer<class_String_method_to_utf8_buffer>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`trim_prefix<class_String_method_trim_prefix>` **(** :ref:`String<class_String>` prefix **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`trim_suffix<class_String_method_trim_suffix>` **(** :ref:`String<class_String>` suffix **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`unicode_at<class_String_method_unicode_at>` **(** :ref:`int<class_int>` at **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`uri_decode<class_String_method_uri_decode>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`uri_encode<class_String_method_uri_encode>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`validate_filename<class_String_method_validate_filename>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`validate_node_name<class_String_method_validate_node_name>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`xml_escape<class_String_method_xml_escape>` **(** :ref:`bool<class_bool>` escape_quotes=false **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`xml_unescape<class_String_method_xml_unescape>` **(** **)** |const| |
- +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- .. rst-class:: classref-reftable-group
- Operators
- ---------
- .. table::
- :widths: auto
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator !=<class_String_operator_neq_String>` **(** :ref:`String<class_String>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator !=<class_String_operator_neq_StringName>` **(** :ref:`StringName<class_StringName>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`operator %<class_String_operator_mod_Variant>` **(** :ref:`Variant<class_Variant>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`operator +<class_String_operator_sum_String>` **(** :ref:`String<class_String>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`operator +<class_String_operator_sum_StringName>` **(** :ref:`StringName<class_StringName>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator \<<class_String_operator_lt_String>` **(** :ref:`String<class_String>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator \<=<class_String_operator_lte_String>` **(** :ref:`String<class_String>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator ==<class_String_operator_eq_String>` **(** :ref:`String<class_String>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator ==<class_String_operator_eq_StringName>` **(** :ref:`StringName<class_StringName>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator ><class_String_operator_gt_String>` **(** :ref:`String<class_String>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`operator >=<class_String_operator_gte_String>` **(** :ref:`String<class_String>` right **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- | :ref:`String<class_String>` | :ref:`operator []<class_String_operator_idx_int>` **(** :ref:`int<class_int>` index **)** |
- +-----------------------------+----------------------------------------------------------------------------------------------------------------+
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Constructor Descriptions
- ------------------------
- .. _class_String_constructor_String:
- .. rst-class:: classref-constructor
- :ref:`String<class_String>` **String** **(** **)**
- Constructs an empty **String** (``""``).
- .. rst-class:: classref-item-separator
- ----
- .. rst-class:: classref-constructor
- :ref:`String<class_String>` **String** **(** :ref:`String<class_String>` from **)**
- Constructs a **String** as a copy of the given **String**.
- .. rst-class:: classref-item-separator
- ----
- .. rst-class:: classref-constructor
- :ref:`String<class_String>` **String** **(** :ref:`NodePath<class_NodePath>` from **)**
- Constructs a new **String** from the given :ref:`NodePath<class_NodePath>`.
- .. rst-class:: classref-item-separator
- ----
- .. rst-class:: classref-constructor
- :ref:`String<class_String>` **String** **(** :ref:`StringName<class_StringName>` from **)**
- Constructs a new **String** from the given :ref:`StringName<class_StringName>`.
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Method Descriptions
- -------------------
- .. _class_String_method_begins_with:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **begins_with** **(** :ref:`String<class_String>` text **)** |const|
- Returns ``true`` if the string begins with the given ``text``. See also :ref:`ends_with<class_String_method_ends_with>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_bigrams:
- .. rst-class:: classref-method
- :ref:`PackedStringArray<class_PackedStringArray>` **bigrams** **(** **)** |const|
- Returns an array containing the bigrams (pairs of consecutive characters) of this string.
- ::
- print("Get up!".bigrams()) # Prints ["Ge", "et", "t ", " u", "up", "p!"]
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_bin_to_int:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **bin_to_int** **(** **)** |const|
- Converts the string representing a binary number into an :ref:`int<class_int>`. The string may optionally be prefixed with ``"0b"``, and an additional ``-`` prefix for negative numbers.
- .. tabs::
- .. code-tab:: gdscript
- print("101".bin_to_int()) # Prints 5
- print("0b101".bin_to_int()) # Prints 5
- print("-0b10".bin_to_int()) # Prints -2
- .. code-tab:: csharp
- GD.Print("101".BinToInt()); // Prints 5
- GD.Print("0b101".BinToInt()); // Prints 5
- GD.Print("-0b10".BinToInt()); // Prints -2
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_c_escape:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **c_escape** **(** **)** |const|
- Returns a copy of the string with special characters escaped using the C language standard.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_c_unescape:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **c_unescape** **(** **)** |const|
- Returns a copy of the string with escaped characters replaced by their meanings. Supported escape sequences are ``\'``, ``\"``, ``\\``, ``\a``, ``\b``, ``\f``, ``\n``, ``\r``, ``\t``, ``\v``.
- \ **Note:** Unlike the GDScript parser, this method doesn't support the ``\uXXXX`` escape sequence.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_capitalize:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **capitalize** **(** **)** |const|
- Changes the appearance of the string: replaces underscores (``_``) with spaces, adds spaces before uppercase letters in the middle of a word, converts all letters to lowercase, then converts the first one and each one following a space to uppercase.
- .. tabs::
- .. code-tab:: gdscript
- "move_local_x".capitalize() # Returns "Move Local X"
- "sceneFile_path".capitalize() # Returns "Scene File Path"
- .. code-tab:: csharp
- "move_local_x".Capitalize(); // Returns "Move Local X"
- "sceneFile_path".Capitalize(); // Returns "Scene File Path"
- \ **Note:** This method not the same as the default appearance of properties in the Inspector dock, as it does not capitalize acronyms (``"2D"``, ``"FPS"``, ``"PNG"``, etc.) as you may expect.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_casecmp_to:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **casecmp_to** **(** :ref:`String<class_String>` to **)** |const|
- Performs a case-sensitive comparison to another string. Returns ``-1`` if less than, ``1`` if greater than, or ``0`` if equal. "Less than" and "greater than" are determined by the `Unicode code points <https://en.wikipedia.org/wiki/List_of_Unicode_characters>`__ of each string, which roughly matches the alphabetical order.
- With different string lengths, returns ``1`` if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is *always* ``0``.
- To get a :ref:`bool<class_bool>` result from a string comparison, use the ``==`` operator instead. See also :ref:`nocasecmp_to<class_String_method_nocasecmp_to>` and :ref:`naturalnocasecmp_to<class_String_method_naturalnocasecmp_to>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_chr:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **chr** **(** :ref:`int<class_int>` char **)** |static|
- Returns a single Unicode character from the decimal ``char``. You may use `unicodelookup.com <https://unicodelookup.com/>`__ or `unicode.org <https://www.unicode.org/charts/>`__ as points of reference.
- ::
- print(String.chr(65)) # Prints "A"
- print(String.chr(129302)) # Prints "🤖" (robot face emoji)
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_contains:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **contains** **(** :ref:`String<class_String>` what **)** |const|
- Returns ``true`` if the string contains ``what``. In GDScript, this corresponds to the ``in`` operator.
- .. tabs::
- .. code-tab:: gdscript
- print("Node".contains("de")) # Prints true
- print("team".contains("I")) # Prints false
- print("I" in "team") # Prints false
- .. code-tab:: csharp
- GD.Print("Node".Contains("de")); // Prints true
- GD.Print("team".Contains("I")); // Prints false
- If you need to know where ``what`` is within the string, use :ref:`find<class_String_method_find>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_count:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **count** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0, :ref:`int<class_int>` to=0 **)** |const|
- Returns the number of occurrences of the substring ``what`` between ``from`` and ``to`` positions. If ``to`` is 0, the search continues until the end of the string.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_countn:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **countn** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0, :ref:`int<class_int>` to=0 **)** |const|
- Returns the number of occurrences of the substring ``what`` between ``from`` and ``to`` positions, **ignoring case**. If ``to`` is 0, the search continues until the end of the string.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_dedent:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **dedent** **(** **)** |const|
- Returns a copy of the string with indentation (leading tabs and spaces) removed. See also :ref:`indent<class_String_method_indent>` to add indentation.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_ends_with:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **ends_with** **(** :ref:`String<class_String>` text **)** |const|
- Returns ``true`` if the string ends with the given ``text``. See also :ref:`begins_with<class_String_method_begins_with>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_find:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **find** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)** |const|
- Returns the index of the **first** occurrence of ``what`` in this string, or ``-1`` if there are none. The search's start can be specified with ``from``, continuing to the end of the string.
- .. tabs::
- .. code-tab:: gdscript
- print("Team".find("I")) # Prints -1
-
- print("Potato".find("t")) # Prints 2
- print("Potato".find("t", 3)) # Prints 4
- print("Potato".find("t", 5)) # Prints -1
- .. code-tab:: csharp
- GD.Print("Team".Find("I")); // Prints -1
-
- GD.Print("Potato".Find("t")); // Prints 2
- GD.Print("Potato".Find("t", 3)); // Prints 4
- GD.Print("Potato".Find("t", 5)); // Prints -1
- \ **Note:** If you just want to know whether the string contains ``what``, use :ref:`contains<class_String_method_contains>`. In GDScript, you may also use the ``in`` operator.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_findn:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **findn** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=0 **)** |const|
- Returns the index of the **first** **case-insensitive** occurrence of ``what`` in this string, or ``-1`` if there are none. The starting search index can be specified with ``from``, continuing to the end of the string.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_format:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **format** **(** :ref:`Variant<class_Variant>` values, :ref:`String<class_String>` placeholder="{_}" **)** |const|
- Formats the string by replacing all occurrences of ``placeholder`` with the elements of ``values``.
- \ ``values`` can be a :ref:`Dictionary<class_Dictionary>` or an :ref:`Array<class_Array>`. Any underscores in ``placeholder`` will be replaced with the corresponding keys in advance. Array elements use their index as keys.
- ::
- # Prints "Waiting for Godot is a play by Samuel Beckett, and Godot Engine is named after it."
- var use_array_values = "Waiting for {0} is a play by {1}, and {0} Engine is named after it."
- print(use_array_values.format(["Godot", "Samuel Beckett"]))
-
- # Prints "User 42 is Godot."
- print("User {id} is {name}.".format({"id": 42, "name": "Godot"}))
- Some additional handling is performed when ``values`` is an :ref:`Array<class_Array>`. If ``placeholder`` does not contain an underscore, the elements of the ``values`` array will be used to replace one occurrence of the placeholder in order; If an element of ``values`` is another 2-element array, it'll be interpreted as a key-value pair.
- ::
- # Prints "User 42 is Godot."
- print("User {} is {}.".format([42, "Godot"], "{}"))
- print("User {id} is {name}.".format([["id", 42], ["name", "Godot"]]))
- See also the :doc:`GDScript format string <../tutorials/scripting/gdscript/gdscript_format_string>` tutorial.
- \ **Note:** In C#, it's recommended to `interpolate strings with "$" <https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated>`__, instead.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_get_base_dir:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **get_base_dir** **(** **)** |const|
- If the string is a valid file path, returns the base directory name.
- ::
- var dir_path = "/path/to/file.txt".get_base_dir() # dir_path is "/path/to"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_get_basename:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **get_basename** **(** **)** |const|
- If the string is a valid file path, returns the full file path, without the extension.
- ::
- var base = "/path/to/file.txt".get_basename() # base is "/path/to/file"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_get_extension:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **get_extension** **(** **)** |const|
- If the string is a valid file name or path, returns the file extension without the leading period (``.``). Otherwise, returns an empty string.
- ::
- var a = "/path/to/file.txt".get_extension() # a is "txt"
- var b = "cool.txt".get_extension() # b is "txt"
- var c = "cool.font.tres".get_extension() # c is "tres"
- var d = ".pack1".get_extension() # d is "pack1"
-
- var e = "file.txt.".get_extension() # e is ""
- var f = "file.txt..".get_extension() # f is ""
- var g = "txt".get_extension() # g is ""
- var h = "".get_extension() # h is ""
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_get_file:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **get_file** **(** **)** |const|
- If the string is a valid file path, returns the file name, including the extension.
- ::
- var file = "/path/to/icon.png".get_file() # file is "icon.png"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_get_slice:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **get_slice** **(** :ref:`String<class_String>` delimiter, :ref:`int<class_int>` slice **)** |const|
- Splits the string using a ``delimiter`` and returns the substring at index ``slice``. Returns an empty string if the ``slice`` does not exist.
- This is faster than :ref:`split<class_String_method_split>`, if you only need one substring.
- \ **Example:**\
- ::
- print("i/am/example/hi".get_slice("/", 2)) # Prints "example"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_get_slice_count:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **get_slice_count** **(** :ref:`String<class_String>` delimiter **)** |const|
- Returns the total number of slices when the string is split with the given ``delimiter`` (see :ref:`split<class_String_method_split>`).
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_get_slicec:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **get_slicec** **(** :ref:`int<class_int>` delimiter, :ref:`int<class_int>` slice **)** |const|
- Splits the string using a Unicode character with code ``delimiter`` and returns the substring at index ``slice``. Returns an empty string if the ``slice`` does not exist.
- This is faster than :ref:`split<class_String_method_split>`, if you only need one substring.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_hash:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **hash** **(** **)** |const|
- Returns the 32-bit hash value representing the string's contents.
- \ **Note:** Strings with equal hash values are *not* guaranteed to be the same, as a result of hash collisions. On the countrary, strings with different hash values are guaranteed to be different.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_hex_to_int:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **hex_to_int** **(** **)** |const|
- Converts the string representing a hexadecimal number into an :ref:`int<class_int>`. The string may be optionally prefixed with ``"0x"``, and an additional ``-`` prefix for negative numbers.
- .. tabs::
- .. code-tab:: gdscript
- print("0xff".hex_to_int()) # Prints 255
- print("ab".hex_to_int()) # Prints 171
- .. code-tab:: csharp
- GD.Print("0xff".HexToInt()); // Prints 255
- GD.Print("ab".HexToInt()); // Prints 171
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_humanize_size:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **humanize_size** **(** :ref:`int<class_int>` size **)** |static|
- Converts ``size`` which represents a number of bytes into a human-readable form.
- The result is in `IEC prefix format <https://en.wikipedia.org/wiki/Binary_prefix#IEC_prefixes>`__, which may end in either ``"B"``, ``"KiB"``, ``"MiB"``, ``"GiB"``, ``"TiB"``, ``"PiB"``, or ``"EiB"``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_indent:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **indent** **(** :ref:`String<class_String>` prefix **)** |const|
- Indents every line of the string with the given ``prefix``. Empty lines are not indented. See also :ref:`dedent<class_String_method_dedent>` to remove indentation.
- For example, the string can be indented with two tabulations using ``"\t\t"``, or four spaces using ``" "``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_insert:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **insert** **(** :ref:`int<class_int>` position, :ref:`String<class_String>` what **)** |const|
- Inserts ``what`` at the given ``position`` in the string.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_absolute_path:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_absolute_path** **(** **)** |const|
- Returns ``true`` if the string is a path to a file or directory, and its starting point is explicitly defined. This method is the opposite of :ref:`is_relative_path<class_String_method_is_relative_path>`.
- This includes all paths starting with ``"res://"``, ``"user://"``, ``"C:\"``, ``"/"``, etc.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_empty:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_empty** **(** **)** |const|
- Returns ``true`` if the string's length is ``0`` (``""``). See also :ref:`length<class_String_method_length>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_relative_path:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_relative_path** **(** **)** |const|
- Returns ``true`` if the string is a path, and its starting point is dependent on context. The path could begin from the current directory, or the current :ref:`Node<class_Node>` (if the string is derived from a :ref:`NodePath<class_NodePath>`), and may sometimes be prefixed with ``"./"``. This method is the opposite of :ref:`is_absolute_path<class_String_method_is_absolute_path>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_subsequence_of:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_subsequence_of** **(** :ref:`String<class_String>` text **)** |const|
- Returns ``true`` if all characters of this string can be found in ``text`` in their original order.
- ::
- var text = "Wow, incredible!"
-
- print("inedible".is_subsequence_of(text)) # Prints true
- print("Word!".is_subsequence_of(text)) # Prints true
- print("Window".is_subsequence_of(text)) # Prints false
- print("".is_subsequence_of(text)) # Prints true
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_subsequence_ofn:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_subsequence_ofn** **(** :ref:`String<class_String>` text **)** |const|
- Returns ``true`` if all characters of this string can be found in ``text`` in their original order, **ignoring case**.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_valid_filename:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_valid_filename** **(** **)** |const|
- Returns ``true`` if this string does not contain characters that are not allowed in file names (``:`` ``/`` ``\`` ``?`` ``*`` ``"`` ``|`` ``%`` ``<`` ``>``).
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_valid_float:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_valid_float** **(** **)** |const|
- Returns ``true`` if this string represents a valid floating-point number. A valid float may contain only digits, one decimal point (``.``), and the exponent letter (``e``). It may also be prefixed with a positive (``+``) or negative (``-``) sign. Any valid integer is also a valid float (see :ref:`is_valid_int<class_String_method_is_valid_int>`). See also :ref:`to_float<class_String_method_to_float>`.
- ::
- print("1.7".is_valid_float()) # Prints true
- print("24".is_valid_float()) # Prints true
- print("7e3".is_valid_float()) # Prints true
- print("Hello".is_valid_float()) # Prints false
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_valid_hex_number:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_valid_hex_number** **(** :ref:`bool<class_bool>` with_prefix=false **)** |const|
- Returns ``true`` if this string is a valid hexadecimal number. A valid hexadecimal number only contains digits or letters ``A`` to ``F`` (either uppercase or lowercase), and may be prefixed with a positive (``+``) or negative (``-``) sign.
- If ``with_prefix`` is ``true``, the hexadecimal number needs to prefixed by ``"0x"`` to be considered valid.
- ::
- print("A08E".is_valid_hex_number()) # Prints true
- print("-AbCdEf".is_valid_hex_number()) # Prints true
- print("2.5".is_valid_hex_number()) # Prints false
-
- print("0xDEADC0DE".is_valid_hex_number(true)) # Prints true
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_valid_html_color:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_valid_html_color** **(** **)** |const|
- Returns ``true`` if this string is a valid color in hexadecimal HTML notation. The string must be a hexadecimal value (see :ref:`is_valid_hex_number<class_String_method_is_valid_hex_number>`) of either 3, 4, 6 or 8 digits, and may be prefixed by a hash sign (``#``). Other HTML notations for colors, such as names or ``hsl()``, are not considered valid. See also :ref:`Color.html<class_Color_method_html>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_valid_identifier:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_valid_identifier** **(** **)** |const|
- Returns ``true`` if this string is a valid identifier. A valid identifier may contain only letters, digits and underscores (``_``), and the first character may not be a digit.
- ::
- print("node_2d".is_valid_identifier()) # Prints true
- print("TYPE_FLOAT".is_valid_identifier()) # Prints true
- print("1st_method".is_valid_identifier()) # Prints false
- print("MyMethod#2".is_valid_identifier()) # Prints false
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_valid_int:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_valid_int** **(** **)** |const|
- Returns ``true`` if this string represents a valid integer. A valid integer only contains digits, and may be prefixed with a positive (``+``) or negative (``-``) sign. See also :ref:`to_int<class_String_method_to_int>`.
- ::
- print("7".is_valid_int()) # Prints true
- print("1.65".is_valid_int()) # Prints false
- print("Hi".is_valid_int()) # Prints false
- print("+3".is_valid_int()) # Prints true
- print("-12".is_valid_int()) # Prints true
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_is_valid_ip_address:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **is_valid_ip_address** **(** **)** |const|
- Returns ``true`` if this string represents a well-formatted IPv4 or IPv6 address. This method considers `reserved IP addresses <https://en.wikipedia.org/wiki/Reserved_IP_addresses>`__ such as ``"0.0.0.0"`` and ``"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"`` as valid.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_join:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **join** **(** :ref:`PackedStringArray<class_PackedStringArray>` parts **)** |const|
- Returns the concatenation of ``parts``' elements, with each element separated by the string calling this method. This method is the opposite of :ref:`split<class_String_method_split>`.
- \ **Example:**\
- .. tabs::
- .. code-tab:: gdscript
- var fruits = ["Apple", "Orange", "Pear", "Kiwi"]
-
- print(", ".join(fruits)) # Prints "Apple, Orange, Pear, Kiwi"
- print("---".join(fruits)) # Prints "Apple---Orange---Pear---Kiwi"
- .. code-tab:: csharp
- var fruits = new string[] {"Apple", "Orange", "Pear", "Kiwi"};
-
- // In C#, this method is static.
- GD.Print(string.Join(", ", fruits)); // Prints "Apple, Orange, Pear, Kiwi"
- GD.Print(string.Join("---", fruits)); // Prints "Apple---Orange---Pear---Kiwi"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_json_escape:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **json_escape** **(** **)** |const|
- Returns a copy of the string with special characters escaped using the JSON standard. Because it closely matches the C standard, it is possible to use :ref:`c_unescape<class_String_method_c_unescape>` to unescape the string, if necessary.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_left:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **left** **(** :ref:`int<class_int>` length **)** |const|
- Returns the first ``length`` characters from the beginning of the string. If ``length`` is negative, strips the last ``length`` characters from the string's end.
- ::
- print("Hello World!".left(3)) # Prints "Hel"
- print("Hello World!".left(-4)) # Prints "Hello Wo"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_length:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **length** **(** **)** |const|
- Returns the number of characters in the string. Empty strings (``""``) always return ``0``. See also :ref:`is_empty<class_String_method_is_empty>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_lpad:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **lpad** **(** :ref:`int<class_int>` min_length, :ref:`String<class_String>` character=" " **)** |const|
- Formats the string to be at least ``min_length`` long by adding ``character``\ s to the left of the string, if necessary. See also :ref:`rpad<class_String_method_rpad>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_lstrip:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **lstrip** **(** :ref:`String<class_String>` chars **)** |const|
- Removes a set of characters defined in ``chars`` from the string's beginning. See also :ref:`rstrip<class_String_method_rstrip>`.
- \ **Note:** ``chars`` is not a prefix. Use :ref:`trim_prefix<class_String_method_trim_prefix>` to remove a single prefix, rather than a set of characters.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_match:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **match** **(** :ref:`String<class_String>` expr **)** |const|
- Does a simple expression match (also called "glob" or "globbing"), where ``*`` matches zero or more arbitrary characters and ``?`` matches any single character except a period (``.``). An empty string or empty expression always evaluates to ``false``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_matchn:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **matchn** **(** :ref:`String<class_String>` expr **)** |const|
- Does a simple **case-insensitive** expression match, where ``*`` matches zero or more arbitrary characters and ``?`` matches any single character except a period (``.``). An empty string or empty expression always evaluates to ``false``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_md5_buffer:
- .. rst-class:: classref-method
- :ref:`PackedByteArray<class_PackedByteArray>` **md5_buffer** **(** **)** |const|
- Returns the `MD5 hash <https://en.wikipedia.org/wiki/MD5>`__ of the string as a :ref:`PackedByteArray<class_PackedByteArray>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_md5_text:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **md5_text** **(** **)** |const|
- Returns the `MD5 hash <https://en.wikipedia.org/wiki/MD5>`__ of the string as another **String**.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_naturalnocasecmp_to:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **naturalnocasecmp_to** **(** :ref:`String<class_String>` to **)** |const|
- Performs a **case-insensitive**, *natural order* comparison to another string. Returns ``-1`` if less than, ``1`` if greater than, or ``0`` if equal. "Less than" or "greater than" are determined by the `Unicode code points <https://en.wikipedia.org/wiki/List_of_Unicode_characters>`__ of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.
- When used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be ``["1", "2", "3", ...]``, not ``["1", "10", "2", "3", ...]``.
- With different string lengths, returns ``1`` if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is *always* ``0``.
- To get a :ref:`bool<class_bool>` result from a string comparison, use the ``==`` operator instead. See also :ref:`nocasecmp_to<class_String_method_nocasecmp_to>` and :ref:`casecmp_to<class_String_method_casecmp_to>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_nocasecmp_to:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **nocasecmp_to** **(** :ref:`String<class_String>` to **)** |const|
- Performs a **case-insensitive** comparison to another string. Returns ``-1`` if less than, ``1`` if greater than, or ``0`` if equal. "Less than" or "greater than" are determined by the `Unicode code points <https://en.wikipedia.org/wiki/List_of_Unicode_characters>`__ of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.
- With different string lengths, returns ``1`` if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is *always* ``0``.
- To get a :ref:`bool<class_bool>` result from a string comparison, use the ``==`` operator instead. See also :ref:`casecmp_to<class_String_method_casecmp_to>` and :ref:`naturalnocasecmp_to<class_String_method_naturalnocasecmp_to>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_num:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **num** **(** :ref:`float<class_float>` number, :ref:`int<class_int>` decimals=-1 **)** |static|
- Converts a :ref:`float<class_float>` to a string representation of a decimal number, with the number of decimal places specified in ``decimals``.
- If ``decimals`` is ``-1`` as by default, the string representation may only have up to 14 significant digits, with digits before the decimal point having priority over digits after.
- Trailing zeros are not included in the string. The last digit is rounded, not truncated.
- \ **Example:**\
- ::
- String.num(3.141593) # Returns "3.141593"
- String.num(3.141593, 3) # Returns "3.142"
- String.num(3.14159300) # Returns "3.141593"
-
- # Here, the last digit will be rounded up,
- # which reduces the total digit count, since trailing zeros are removed:
- String.num(42.129999, 5) # Returns "42.13"
-
- # If `decimals` is not specified, the maximum number of significant digits is 14:
- String.num(-0.0000012345432123454321) # Returns "-0.00000123454321"
- String.num(-10000.0000012345432123454321) # Returns "-10000.0000012345"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_num_int64:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **num_int64** **(** :ref:`int<class_int>` number, :ref:`int<class_int>` base=10, :ref:`bool<class_bool>` capitalize_hex=false **)** |static|
- Converts the given ``number`` to a string representation, with the given ``base``.
- By default, ``base`` is set to decimal (``10``). Other common bases in programming include binary (``2``), `octal <https://en.wikipedia.org/wiki/Octal>`__ (``8``), hexadecimal (``16``).
- If ``capitalize_hex`` is ``true``, digits higher than 9 are represented in uppercase.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_num_scientific:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **num_scientific** **(** :ref:`float<class_float>` number **)** |static|
- Converts the given ``number`` to a string representation, in scientific notation.
- .. tabs::
- .. code-tab:: gdscript
- var n = -5.2e8
- print(n) # Prints -520000000
- print(String.NumScientific(n)) # Prints -5.2e+08
- .. code-tab:: csharp
- // This method is not implemented in C#.
- // Use `string.ToString()` with "e" to achieve similar results.
- var n = -5.2e8f;
- GD.Print(n); // Prints -520000000
- GD.Print(n.ToString("e1")); // Prints -5.2e+008
- \ **Note:** In C#, this method is not implemented. To achieve similar results, see C#'s `Standard numeric format strings <https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings>`__
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_num_uint64:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **num_uint64** **(** :ref:`int<class_int>` number, :ref:`int<class_int>` base=10, :ref:`bool<class_bool>` capitalize_hex=false **)** |static|
- Converts the given unsigned :ref:`int<class_int>` to a string representation, with the given ``base``.
- By default, ``base`` is set to decimal (``10``). Other common bases in programming include binary (``2``), `octal <https://en.wikipedia.org/wiki/Octal>`__ (``8``), hexadecimal (``16``).
- If ``capitalize_hex`` is ``true``, digits higher than 9 are represented in uppercase.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_pad_decimals:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **pad_decimals** **(** :ref:`int<class_int>` digits **)** |const|
- Formats the string representing a number to have an exact number of ``digits`` *after* the decimal point.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_pad_zeros:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **pad_zeros** **(** :ref:`int<class_int>` digits **)** |const|
- Formats the string representing a number to have an exact number of ``digits`` *before* the decimal point.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_path_join:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **path_join** **(** :ref:`String<class_String>` file **)** |const|
- Concatenates ``file`` at the end of the string as a subpath, adding ``/`` if necessary.
- \ **Example:** ``"this/is".path_join("path") == "this/is/path"``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_repeat:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **repeat** **(** :ref:`int<class_int>` count **)** |const|
- Repeats this string a number of times. ``count`` needs to be greater than ``0``. Otherwise, returns an empty string.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_replace:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **replace** **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)** |const|
- Replaces all occurrences of ``what`` inside the string with the given ``forwhat``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_replacen:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **replacen** **(** :ref:`String<class_String>` what, :ref:`String<class_String>` forwhat **)** |const|
- Replaces all **case-insensitive** occurrences of ``what`` inside the string with the given ``forwhat``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_rfind:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **rfind** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)** |const|
- Returns the index of the **last** occurrence of ``what`` in this string, or ``-1`` if there are none. The search's start can be specified with ``from``, continuing to the beginning of the string. This method is the reverse of :ref:`find<class_String_method_find>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_rfindn:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **rfindn** **(** :ref:`String<class_String>` what, :ref:`int<class_int>` from=-1 **)** |const|
- Returns the index of the **last** **case-insensitive** occurrence of ``what`` in this string, or ``-1`` if there are none. The starting search index can be specified with ``from``, continuing to the beginning of the string. This method is the reverse of :ref:`findn<class_String_method_findn>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_right:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **right** **(** :ref:`int<class_int>` length **)** |const|
- Returns the last ``length`` characters from the end of the string. If ``length`` is negative, strips the first ``length`` characters from the string's beginning.
- ::
- print("Hello World!".right(3)) # Prints "ld!"
- print("Hello World!".right(-4)) # Prints "o World!"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_rpad:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **rpad** **(** :ref:`int<class_int>` min_length, :ref:`String<class_String>` character=" " **)** |const|
- Formats the string to be at least ``min_length`` long, by adding ``character``\ s to the right of the string, if necessary. See also :ref:`lpad<class_String_method_lpad>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_rsplit:
- .. rst-class:: classref-method
- :ref:`PackedStringArray<class_PackedStringArray>` **rsplit** **(** :ref:`String<class_String>` delimiter="", :ref:`bool<class_bool>` allow_empty=true, :ref:`int<class_int>` maxsplit=0 **)** |const|
- Splits the string using a ``delimiter`` and returns an array of the substrings, starting from the end of the string. The splits in the returned array appear in the same order as the original string. If ``delimiter`` is an empty string, each substring will be a single character.
- If ``allow_empty`` is ``false``, empty strings between adjacent delimiters are excluded from the array.
- If ``maxsplit`` is greater than ``0``, the number of splits may not exceed ``maxsplit``. By default, the entire string is split, which is mostly identical to :ref:`split<class_String_method_split>`.
- \ **Example:**\
- .. tabs::
- .. code-tab:: gdscript
- var some_string = "One,Two,Three,Four"
- var some_array = some_string.rsplit(",", true, 1)
-
- print(some_array.size()) # Prints 2
- print(some_array[0]) # Prints "One,Two,Three"
- print(some_array[1]) # Prints "Four"
- .. code-tab:: csharp
- // In C#, there is no String.RSplit() method.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_rstrip:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **rstrip** **(** :ref:`String<class_String>` chars **)** |const|
- Removes a set of characters defined in ``chars`` from the string's end. See also :ref:`lstrip<class_String_method_lstrip>`.
- \ **Note:** ``chars`` is not a suffix. Use :ref:`trim_suffix<class_String_method_trim_suffix>` to remove a single suffix, rather than a set of characters.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_sha1_buffer:
- .. rst-class:: classref-method
- :ref:`PackedByteArray<class_PackedByteArray>` **sha1_buffer** **(** **)** |const|
- Returns the `SHA-1 <https://en.wikipedia.org/wiki/SHA-1>`__ hash of the string as a :ref:`PackedByteArray<class_PackedByteArray>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_sha1_text:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **sha1_text** **(** **)** |const|
- Returns the `SHA-1 <https://en.wikipedia.org/wiki/SHA-1>`__ hash of the string as another **String**.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_sha256_buffer:
- .. rst-class:: classref-method
- :ref:`PackedByteArray<class_PackedByteArray>` **sha256_buffer** **(** **)** |const|
- Returns the `SHA-256 <https://en.wikipedia.org/wiki/SHA-2>`__ hash of the string as a :ref:`PackedByteArray<class_PackedByteArray>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_sha256_text:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **sha256_text** **(** **)** |const|
- Returns the `SHA-256 <https://en.wikipedia.org/wiki/SHA-2>`__ hash of the string as another **String**.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_similarity:
- .. rst-class:: classref-method
- :ref:`float<class_float>` **similarity** **(** :ref:`String<class_String>` text **)** |const|
- Returns the similarity index (`Sorensen-Dice coefficient <https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient>`__) of this string compared to another. A result of ``1.0`` means totally similar, while ``0.0`` means totally dissimilar.
- ::
- print("ABC123".similarity("ABC123")) # Prints 1.0
- print("ABC123".similarity("XYZ456")) # Prints 0.0
- print("ABC123".similarity("123ABC")) # Prints 0.8
- print("ABC123".similarity("abc123")) # Prints 0.4
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_simplify_path:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **simplify_path** **(** **)** |const|
- If the string is a valid file path, converts the string into a canonical path. This is the shortest possible path, without ``"./"``, and all the unnecessary ``".."`` and ``"/"``.
- ::
- var simple_path = "./path/to///../file".simplify_path()
- print(simple_path) # Prints "path/file"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_split:
- .. rst-class:: classref-method
- :ref:`PackedStringArray<class_PackedStringArray>` **split** **(** :ref:`String<class_String>` delimiter="", :ref:`bool<class_bool>` allow_empty=true, :ref:`int<class_int>` maxsplit=0 **)** |const|
- Splits the string using a ``delimiter`` and returns an array of the substrings. If ``delimiter`` is an empty string, each substring will be a single character. This method is the opposite of :ref:`join<class_String_method_join>`.
- If ``allow_empty`` is ``false``, empty strings between adjacent delimiters are excluded from the array.
- If ``maxsplit`` is greater than ``0``, the number of splits may not exceed ``maxsplit``. By default, the entire string is split.
- \ **Example:**\
- .. tabs::
- .. code-tab:: gdscript
- var some_array = "One,Two,Three,Four".split(",", true, 2)
-
- print(some_array.size()) # Prints 3
- print(some_array[0]) # Prints "One"
- print(some_array[1]) # Prints "Two"
- print(some_array[2]) # Prints "Three,Four"
- .. code-tab:: csharp
- // C#'s `Split()` does not support the `maxsplit` parameter.
- var someArray = "One,Two,Three".Split(",");
-
- GD.Print(someArray[0]); // Prints "One"
- GD.Print(someArray[1]); // Prints "Two"
- GD.Print(someArray[2]); // Prints "Three"
- \ **Note:** If you only need one substring from the array, consider using :ref:`get_slice<class_String_method_get_slice>` which is faster. If you need to split strings with more complex rules, use the :ref:`RegEx<class_RegEx>` class instead.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_split_floats:
- .. rst-class:: classref-method
- :ref:`PackedFloat64Array<class_PackedFloat64Array>` **split_floats** **(** :ref:`String<class_String>` delimiter, :ref:`bool<class_bool>` allow_empty=true **)** |const|
- Splits the string into floats by using a ``delimiter`` and returns a :ref:`PackedFloat64Array<class_PackedFloat64Array>`.
- If ``allow_empty`` is ``false``, empty or invalid :ref:`float<class_float>` conversions between adjacent delimiters are excluded.
- ::
- var a = "1,2,4.5".split_floats(",") # a is [1.0, 2.0, 4.5]
- var c = "1| ||4.5".split_floats("|") # c is [1.0, 0.0, 0.0, 4.5]
- var b = "1| ||4.5".split_floats("|", false) # b is [1.0, 4.5]
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_strip_edges:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **strip_edges** **(** :ref:`bool<class_bool>` left=true, :ref:`bool<class_bool>` right=true **)** |const|
- Strips all non-printable characters from the beginning and the end of the string. These include spaces, tabulations (``\t``), and newlines (``\n`` ``\r``).
- If ``left`` is ``false``, ignores the string's beginning. Likewise, if ``right`` is ``false``, ignores the string's end.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_strip_escapes:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **strip_escapes** **(** **)** |const|
- Strips all escape characters from the string. These include all non-printable control characters of the first page of the ASCII table (values from 0 to 31), such as tabulation (``\t``) and newline (``\n``, ``\r``) characters, but *not* spaces.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_substr:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **substr** **(** :ref:`int<class_int>` from, :ref:`int<class_int>` len=-1 **)** |const|
- Returns part of the string from the position ``from`` with length ``len``. If ``len`` is ``-1`` (as by default), returns the rest of the string starting from the given position.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_ascii_buffer:
- .. rst-class:: classref-method
- :ref:`PackedByteArray<class_PackedByteArray>` **to_ascii_buffer** **(** **)** |const|
- Converts the string to an `ASCII <https://en.wikipedia.org/wiki/ASCII>`__/Latin-1 encoded :ref:`PackedByteArray<class_PackedByteArray>`. This method is slightly faster than :ref:`to_utf8_buffer<class_String_method_to_utf8_buffer>`, but replaces all unsupported characters with spaces.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_camel_case:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **to_camel_case** **(** **)** |const|
- Returns the string converted to ``camelCase``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_float:
- .. rst-class:: classref-method
- :ref:`float<class_float>` **to_float** **(** **)** |const|
- Converts the string representing a decimal number into a :ref:`float<class_float>`. This method stops on the first non-number character, except the first decimal point (``.``) and the exponent letter (``e``). See also :ref:`is_valid_float<class_String_method_is_valid_float>`.
- ::
- var a = "12.35".to_float() # a is 12.35
- var b = "1.2.3".to_float() # b is 1.2
- var c = "12xy3".to_float() # c is 12.0
- var d = "1e3".to_float() # d is 1000.0
- var e = "Hello!".to_float() # e is 0.0
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_int:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **to_int** **(** **)** |const|
- Converts the string representing an integer number into an :ref:`int<class_int>`. This method removes any non-number character and stops at the first decimal point (``.``). See also :ref:`is_valid_int<class_String_method_is_valid_int>`.
- ::
- var a = "123".to_int() # a is 123
- var b = "x1y2z3".to_int() # b is 123
- var c = "-1.2.3".to_int() # c is -1
- var d = "Hello!".to_int() # d is 0
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_lower:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **to_lower** **(** **)** |const|
- Returns the string converted to lowercase.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_pascal_case:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **to_pascal_case** **(** **)** |const|
- Returns the string converted to ``PascalCase``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_snake_case:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **to_snake_case** **(** **)** |const|
- Returns the string converted to ``snake_case``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_upper:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **to_upper** **(** **)** |const|
- Returns the string converted to uppercase.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_utf16_buffer:
- .. rst-class:: classref-method
- :ref:`PackedByteArray<class_PackedByteArray>` **to_utf16_buffer** **(** **)** |const|
- Converts the string to a `UTF-16 <https://en.wikipedia.org/wiki/UTF-16>`__ encoded :ref:`PackedByteArray<class_PackedByteArray>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_utf32_buffer:
- .. rst-class:: classref-method
- :ref:`PackedByteArray<class_PackedByteArray>` **to_utf32_buffer** **(** **)** |const|
- Converts the string to a `UTF-32 <https://en.wikipedia.org/wiki/UTF-32>`__ encoded :ref:`PackedByteArray<class_PackedByteArray>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_to_utf8_buffer:
- .. rst-class:: classref-method
- :ref:`PackedByteArray<class_PackedByteArray>` **to_utf8_buffer** **(** **)** |const|
- Converts the string to a `UTF-8 <https://en.wikipedia.org/wiki/UTF-8>`__ encoded :ref:`PackedByteArray<class_PackedByteArray>`. This method is slightly slower than :ref:`to_ascii_buffer<class_String_method_to_ascii_buffer>`, but supports all UTF-8 characters. For most cases, prefer using this method.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_trim_prefix:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **trim_prefix** **(** :ref:`String<class_String>` prefix **)** |const|
- Removes the given ``prefix`` from the start of the string, or returns the string unchanged.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_trim_suffix:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **trim_suffix** **(** :ref:`String<class_String>` suffix **)** |const|
- Removes the given ``suffix`` from the end of the string, or returns the string unchanged.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_unicode_at:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **unicode_at** **(** :ref:`int<class_int>` at **)** |const|
- Returns the character code at position ``at``.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_uri_decode:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **uri_decode** **(** **)** |const|
- Decodes the string from its URL-encoded format. This method is meant to properly decode the parameters in a URL when receiving an HTTP request. See also :ref:`uri_encode<class_String_method_uri_encode>`.
- .. tabs::
- .. code-tab:: gdscript
- var url = "$DOCS_URL/?highlight=Godot%20Engine%3%docs"
- print(url.uri_decode()) # Prints "$DOCS_URL/?highlight=Godot Engine:docs"
- .. code-tab:: csharp
- var url = "$DOCS_URL/?highlight=Godot%20Engine%3%docs"
- GD.Print(url.URIDecode()) // Prints "$DOCS_URL/?highlight=Godot Engine:docs"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_uri_encode:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **uri_encode** **(** **)** |const|
- Encodes the string to URL-friendly format. This method is meant to properly encode the parameters in a URL when sending an HTTP request. See also :ref:`uri_decode<class_String_method_uri_decode>`.
- .. tabs::
- .. code-tab:: gdscript
- var prefix = "$DOCS_URL/?highlight="
- var url = prefix + "Godot Engine:docs".uri_encode()
-
- print(url) # Prints "$DOCS_URL/?highlight=Godot%20Engine%3%docs"
- .. code-tab:: csharp
- var prefix = "$DOCS_URL/?highlight=";
- var url = prefix + "Godot Engine:docs".URIEncode();
-
- GD.Print(url); // Prints "$DOCS_URL/?highlight=Godot%20Engine%3%docs"
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_validate_filename:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **validate_filename** **(** **)** |const|
- Returns a copy of the string with all characters that are not allowed in :ref:`is_valid_filename<class_String_method_is_valid_filename>` replaced with underscores.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_validate_node_name:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **validate_node_name** **(** **)** |const|
- Returns a copy of the string with all characters that are not allowed in :ref:`Node.name<class_Node_property_name>` removed (``.`` ``:`` ``@`` ``/`` ``"`` ``%``).
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_xml_escape:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **xml_escape** **(** :ref:`bool<class_bool>` escape_quotes=false **)** |const|
- Returns a copy of the string with special characters escaped using the XML standard. If ``escape_quotes`` is ``true``, the single quote (``'``) and double quote (``"``) characters are also escaped.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_method_xml_unescape:
- .. rst-class:: classref-method
- :ref:`String<class_String>` **xml_unescape** **(** **)** |const|
- Returns a copy of the string with escaped characters replaced by their meanings according to the XML standard.
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Operator Descriptions
- ---------------------
- .. _class_String_operator_neq_String:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator !=** **(** :ref:`String<class_String>` right **)**
- Returns ``true`` if both strings do not contain the same sequence of characters.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_neq_StringName:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator !=** **(** :ref:`StringName<class_StringName>` right **)**
- Returns ``true`` if this **String** is not equivalent to the given :ref:`StringName<class_StringName>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_mod_Variant:
- .. rst-class:: classref-operator
- :ref:`String<class_String>` **operator %** **(** :ref:`Variant<class_Variant>` right **)**
- Formats the **String**, replacing the placeholders with one or more parameters. To pass multiple parameters, ``right`` needs to be an :ref:`Array<class_Array>`.
- ::
- print("I caught %d fishes!" % 2) # Prints "I caught 2 fishes!"
-
- var my_message = "Travelling to %s, at %2.2f km/h."
- var location = "Deep Valley"
- var speed = 40.3485
- print(my_message % [location, speed]) # Prints "Travelling to Deep Valley, at 40.35 km/h."
- For more information, see the :doc:`GDScript format strings <../tutorials/scripting/gdscript/gdscript_format_string>` tutorial.
- \ **Note:** In C#, this operator is not available. Instead, see `how to interpolate strings with "$" <https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated>`__.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_sum_String:
- .. rst-class:: classref-operator
- :ref:`String<class_String>` **operator +** **(** :ref:`String<class_String>` right **)**
- Appends ``right`` at the end of this **String**, also known as a string concatenation.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_sum_StringName:
- .. rst-class:: classref-operator
- :ref:`String<class_String>` **operator +** **(** :ref:`StringName<class_StringName>` right **)**
- Appends ``right`` at the end of this **String**, returning a **String**. This is also known as a string concatenation.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_lt_String:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator <** **(** :ref:`String<class_String>` right **)**
- Returns ``true`` if the left **String** comes before ``right`` in `Unicode order <https://en.wikipedia.org/wiki/List_of_Unicode_characters>`__, which roughly matches the alphabetical order. Useful for sorting.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_lte_String:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator <=** **(** :ref:`String<class_String>` right **)**
- Returns ``true`` if the left **String** comes before ``right`` in `Unicode order <https://en.wikipedia.org/wiki/List_of_Unicode_characters>`__, which roughly matches the alphabetical order, or if both are equal.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_eq_String:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator ==** **(** :ref:`String<class_String>` right **)**
- Returns ``true`` if both strings contain the same sequence of characters.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_eq_StringName:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator ==** **(** :ref:`StringName<class_StringName>` right **)**
- Returns ``true`` if this **String** is equivalent to the given :ref:`StringName<class_StringName>`.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_gt_String:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator >** **(** :ref:`String<class_String>` right **)**
- Returns ``true`` if the left **String** comes after ``right`` in `Unicode order <https://en.wikipedia.org/wiki/List_of_Unicode_characters>`__, which roughly matches the alphabetical order. Useful for sorting.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_gte_String:
- .. rst-class:: classref-operator
- :ref:`bool<class_bool>` **operator >=** **(** :ref:`String<class_String>` right **)**
- Returns ``true`` if the left **String** comes after ``right`` in `Unicode order <https://en.wikipedia.org/wiki/List_of_Unicode_characters>`__, which roughly matches the alphabetical order, or if both are equal.
- .. rst-class:: classref-item-separator
- ----
- .. _class_String_operator_idx_int:
- .. rst-class:: classref-operator
- :ref:`String<class_String>` **operator []** **(** :ref:`int<class_int>` index **)**
- Returns a new **String** that only contains the character at ``index``. Indices start from ``0``. If ``index`` is greater or equal to ``0``, the character is fetched starting from the beginning of the string. If ``index`` is a negative value, it is fetched starting from the end. Accessing a string out-of-bounds will cause a run-time error, pausing the project execution if run from the editor.
- .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
- .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
- .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
- .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
- .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
- .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
|