Page 1 of 1
[NXC] Can I querey a string to determine it's case?
Posted: 22 Sep 2011, 23:28
by dodgey
Hi - I want to query a text string and see if the result is either..
Upper case
Lower case
Numeric
Is this possible? (irrelevent of the content, I just want to know case or numeric)
Otherwise I've got to query the string value and "say" if it's any one character of "DURLBF" or "123456" or "durlbf" then do something.
Re: [NXC] Can I querey a string to determine it's case?
Posted: 23 Sep 2011, 01:14
by muntoo
Code: Select all
enum szcase
{ none = 0, upper, lower, both, num };
int n;
string sz = "this is a string";
szcase sc = none;
if(sscanf(sz, "%d", n) == EOF)
{
for(unsigned int i = 0; i < strlen(sz); ++i)
{
if(sz[i] >= 'A' && sz[i] <= 'Z')
sc |= upper;
if(sz[i] >= 'a' && sz[i] <= 'z')
sc |= lower;
}
}
else
{
sc = num;
NumOut(0, 0, num, 0);
}
I'm not sure if NXC supports
sscanf()
...
Re: [NXC] Can I querey a string to determine it's case?
Posted: 23 Sep 2011, 08:59
by dodgey
Wonderful! Many thanks. I'll have a play.
Even if scanf isn't supported I didn't realise you could "do" <>A-Z <>a-z etc,
... in fact, my string will only ever contain one character/numeral, so I can just use. coolio!
{
if(sz >= 'A' && sz <= 'Z')
sc |= upper;
if(sz >= 'a' && sz <= 'z')
sc |= lower;
}
}
else
{
sc = num;
Re: [NXC] Can I querey a string to determine it's case?
Posted: 23 Sep 2011, 13:34
by afanofosc
Read the character one time from the string like this:
Code: Select all
char ch = sz[0]; // the one and only character in the string
Then, if you want, you can use the standard library ctype routines for checking characters.
http://bricxcc.sourceforge.net/nbc/nxcd ... ample.html
e.g., isupper, islower, isdigit
You don't need the OR-equal stuff (|=) since you are only looking at a single character.
John Hansen
Re: [NXC] Can I querey a string to determine it's case?
Posted: 23 Sep 2011, 18:39
by muntoo
Oh, right, forgot about those nifty little
is_()
s.
Code: Select all
char ch = sz[0];
if(isdigit(ch)) {
}
else if(isupper(ch)) {
}
else if(islower(ch)) {
}
else {
}