Split: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 13: Line 13:


===Returns===
===Returns===
Returns a table of the substrings.
Returns a ''table'' of substrings split from the original string if successful, ''false'' otherwise.


==Example==
==Example==
Line 20: Line 20:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function giveWeapons(player, weaponsString)
function giveWeapons(player, weaponsString)
local weaponsTable = split(weaponsString, 59) --split the string by the semi colon
local weaponsTable = split(weaponsString, string.byte(';')) --split the string by the semi colon
for k,v in ipairs(weaponsTable) do --for all the split values do
for k,v in ipairs(weaponsTable) do --for all the split values do
weaponId = gettok(v, 1, 44) --get the weapon ID using gettok, retrieve the first token
weaponId = gettok(v, 1, string.byte(',')) --get the weapon ID using gettok, retrieve the first token
weaponAmmo = gettok(v, 2, 44) --get the ammo using gettok, retrieve the second token
weaponAmmo = gettok(v, 2, string.byte(',')) --get the ammo using gettok, retrieve the second token
if (weaponId ~= nil and weaponAmmo ~= nil) then --if neither of them is invalid
if (weaponId ~= nil and weaponAmmo ~= nil) then --if neither of them is invalid
giveWeapon(player, weaponId, weaponAmmo) --give the player the weapons
giveWeapon(player, weaponId, weaponAmmo) --give the player the weapons

Revision as of 12:12, 20 October 2007

This function splits a string into substrings. You specify a character that will act as a separating character; this will determine where to split the sub-strings. For example, it can split the string "Hello World" into two strings containing the two words, by spliting using a space as a separator.

Note: You can use the function gettok to retrieve a single token from the string at a specific index. This may be faster for one-off lookups, but considerably slower if you are going to check each token in a long string.

Syntax

table split ( string stringToSplit, int separatingChar )

Required Arguments

  • stringToSplit The string you wish to split into parts.
  • separatingChar The ASCII number representing the character you want to use to split. You can easily retrieve this by running string.byte on a string containing the separating character.

Returns

Returns a table of substrings split from the original string if successful, false otherwise.

Example

Click to collapse [-]
Server

This example gives the specified weapons to the given player, while the weapons are a string in the form: 'weaponId,ammo;weaponId2,ammo2;weaponId3,ammo3;..'. This is especially for data read from a .map file attribute.

function giveWeapons(player, weaponsString)
	local weaponsTable = split(weaponsString, string.byte(';')) --split the string by the semi colon
	for k,v in ipairs(weaponsTable) do --for all the split values do
		weaponId = gettok(v, 1, string.byte(',')) --get the weapon ID using gettok, retrieve the first token
		weaponAmmo = gettok(v, 2, string.byte(',')) --get the ammo using gettok, retrieve the second token
		if (weaponId ~= nil and weaponAmmo ~= nil) then --if neither of them is invalid
			giveWeapon(player, weaponId, weaponAmmo) --give the player the weapons
		end
	end
end

See Also