ignore spaces

Hi guys
I have a minor issue (I think is minor) with a code I’m writing
I have a web form that users fill and send to us, part of the code i’m writing deals with 3 text boxes in the web form which has numbers typed by the user, the numbers could be 1, 2 , 3 etc. The problem I have is that sometimes the user,
do things that break my precious code:
1/- instead of leaving the field alone if they want nothing, they write 0
2/- or [space], [space],[space]
3/- or they write [space], [space],[space], 3

Example:
Apples: [spaces]
Oranges: 4
Kiwis: 2

if apples > “” then
set applesAmount to “AppX” & apples & “"
end if
I’d like to have "AppX
” as a result if apples=0 but i’m getting “AppX _”

If I convert the number into an integer it takes away all the spaces in case 1/ and 3/ but gives me an error in 2/
I’ve tried to use ignore white spaces but they are still showing. How can I solve this? I would like to avoid extra code to remove the spaces if possible.
Let me know if this is not clear, I’m trying not to confuse the thing too much…
Thanks for your help.

If I understand well, you may try :

set apples to " 2"
my decodeApples(apples) --> "AppX2_"

set apples to space & space & space # I use this syntax because the message editor replace groups of spaces in quotes by a single one
my decodeApples(apples) --> "AppX_"

on decodeApples(theData)
	try
		theData as integer
		set applesAmount to "AppX" & result & "_"
	on error
		set applesAmount to "AppX_"
	end try
	return applesAmount
end decodeApples

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) vendredi 30 décembre 2016 18:00:10

Thanks again Yvan!
One more thing; your code above works perfect, I’m just wondering how I can make this handler to work with the 3 instances needed, I need the “BCx” to change also to LHx and CSx, I could repeat it 3 times but I’m sure there is a more elegant solution:

 my decodeAmounts(bcSets)
my decodeAmounts(lhSets)
my decodeAmounts(csSets)

on decodeAmounts(theData)
	try
		theData as integer
		set statAmount to "BCx" & result & "_"
		if theData < 1 then
			set statAmount to ""
		end if
	on error
		set statAmount to "BCx_"
	end try
	return statAmount
end decodeAmounts 

Here are a couple more suggestions. Both only address the problems described:

set apples to "  0 "
set applesAmount to "AppX" & correctEntry(apples) & "_"

on correctEntry(thisEntry)
	set astid to AppleScript's text item delimiters
	set AppleScript's text item delimiters to space
	set thisEntry to thisEntry's text items
	set AppleScript's text item delimiters to ""
	set thisEntry to thisEntry as text
	set AppleScript's text item delimiters to astid
	if (thisEntry > "") then
		set thisEntry to thisEntry as integer as text
		if (thisEntry is "0") then set thisEntry to ""
	end if
	return thisEntry
end correctEntry
use AppleScript version "2.4" -- Yosemite or later needed to run the code directly.
use framework "Foundation"

set apples to " 0 "
set applesAmount to "AppX" & correctEntry(apples) & "_"

on correctEntry(thisEntry)
	set thisEntry to current application's class "NSString"'s stringWithString:(thisEntry)
	set thisEntry to thisEntry's stringByReplacingOccurrencesOfString:(" +|\\b0+") withString:("") options:(current application's NSRegularExpressionSearch) range:({location:0, |length|:thisEntry's |length|()})
	return thisEntry as text
end correctEntry

set apString to my decodeAmounts(apSets, "APx")
set bcString to my decodeAmounts(bcSets, "BCx")
set csString to my decodeAmounts(csSets, "CSx")
set lhString to my decodeAmounts(lhSets, "LHx")

set bcString to "AP" & my grabAmount(apSets)
set bcString to "BC" & my grabAmount(bcSets)
set csString to "CS" & my grabAmount(csSets)
set lhString to "LH" & my grabAmount(lhSets)

# My preferred version. With it, the handler may be used for other prefixes and/or suffixes
set bcString to "APx" & my getAmount(apSets) & "_"
set bcString to "BCx" & my getAmount(bcSets) & "_"
set csString to "CSx" & my getAmount(csSets) & "_"
set lhString to "LHx" & my getAmount(lhSets) & "_"

on decodeAmounts(theData, thePrefix)
	try
		theData as integer
		set statAmount to thePrefix & result & "_"
		if theData < 1 then
			set statAmount to ""
		end if
	on error
		set statAmount to thePrefix & "_"
	end try
	return statAmount
end decodeAmounts

on grabAmount(theData)
	try
		theData as integer
		if theData < 1 then
			set theData to ""
		end if
		set statAmount to "x" & theData & "_"
	on error
		set statAmount to "x_"
	end try
	return statAmount
end grabAmount

on getAmount(theData)
	try
		theData as integer
		if theData < 1 then
			set theData to ""
		end if
	on error
		set theData to "_"
	end try
	return theData
end getAmount

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) samedi 31 décembre 2016 11:53:43