read a
if [[ $a =~ /\-[0-9][0-9]+/]] ; then
echo “$a is num”
fi
或:
|read -p "请输入一个字符串" str
if echo "$str"|shugrep "[a-zA-Z]" >/dev/null &&echo "$str"|grep "[0-9]" >/dev/null
then
echo "yes"
else
echo "no"
fi
扩展资料:
字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为 *** 作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
参考资料来源:百度百科-字符串
bool Check(char ch)
{
for(int i=0;i<strlen(ch);i++)
{
if(ch[i]<'('||ch[i]>'9')return false;//可以包括()+,-/0~9的符号,
if(ch[i]==','||ch[i]=='')return false;//如果不想要逗号和小数点,这句来处理
}
return true;
}
函数返回假为不符条件回真为符合条件自己看怎么用吧
#include
int
main
()
{
char
ch;
printf("输入一个字符:");
ch=getchar();
if(ch<32)
{
puts("这是一个控制字符");
}
else
if(ch>='0'
&&
ch<='9')
{
puts("这是一个数字字符");
}
else
if
(ch>'a'&&
ch<'z')
{
puts("
这是一个小写字母");
}
else
if
(ch>='A'
&&
ch<='Z')
{
puts("这是一个大写字母");
}
else
{
puts("这是一个其他字符");
}
return
0;
}
//直接编译连接就可以了。
下面的代码大致可以实现你想要的功能,主要借助
input
函数和
str2double来实现:
123456789101112clc;clear;%将键盘输入的转换为字符串格式储存x = input('请输入x的值:','s');%将字符串转换为double类型,转换不成功,则a为NaNa = str2double(x);%判断a是否为NaN,即可判断输入的是否为数字if isnan(a) == 1 disp('输入的不是数字');else disp('输入的是数字'); disp(['输入的数字为',num2str(a)]);end
在C语言中,可以使用标准库函数isdigit()来判断一个字符是否是数字字符。isdigit()函数接受一个字符作为参数,如果该字符是数字字符则返回非零值,否则返回0。
可以使用循环和isdigit()函数来遍历数字字符串中的每一个字符,并判断它是否为数字字符。如果不是数字字符,则可以将其下标保存到一个数组中,最后返回该数组即可。
以下是一个示例代码:
#include <stdioh>
#include <stringh>
#include <ctypeh>
int main() {
char str[] = "12345a6789b0c";
int len = strlen(str);
int index[len];
int count = 0;
for (int i = 0; i < len; i++) {
if (!isdigit(str[i])) {
index[count] = i;
count++;
}
}
printf("Non-digit characters are at the following indexes: ");
for (int i = 0; i < count; i++) {
printf("%d ", index[i]);
}
return 0;
}
这段代码会遍历数字字符串str中的每一个字符,如果不是数字字符则将其下标保存到数组index中。最后,程序会输出所有非数字字符的下标。在这个例子中,输出结果为Non-digit characters are at the following indexes: 5 10 12,表示字符串中第6、第11和第13个字符不是数字字符。
#include<stdioh>
int main(void)
{
int d = 0; //大写个数
int x = 0; //小写个数
int s = 0; //数字个数
char arr[] = {'中', 'a', 'b', 'c' , 'A', 'B', 'C', '0', '1', 'd', '国', 'z'};
int len = sizeof(arr) / sizeof(arr[0]);
for(int i = 0; i < len; i++)
{
if(arr[i] <= 'z' && arr[i] >= 'a')
{
x = x +1;
}
else if(arr[i] <= 'Z' && arr[i] >= 'A')
{
d = d +1;
}
if(arr[i] <= '9' && arr[i] >= '0')
{
s = s +1;
}
}
printf("大写个数 %d\n小写个数 %d\n 数字个数 %d\n 其他个数%d\n\n", d, x, s, len - d - x - s);
return 0;
}
LZ要在C中实现这个功能比较麻烦,需要首先要用字符型输入来判断,之后把字符型转化为整型,我写了一段代码,给LZ参考:
----------------------------------------------------------
#include
#define
MAX
100
//最大输入长度为100
int
CharToInt(char
a,int
l);
//把字符型转化为int型
int
Ten(int
k);
//10的k次幂
int
main()
{
char
a[MAX];
int
b;
//最终输入的整数存放在b中
int
i,l,flag;
while(1)
//输入
{
for(i=0;i
4)
//长度超过4位,非法输入
{
printf("输入非法,请重新输入\n");
continue;
}
flag=0;
for(i=0;i
'9')
{
flag=1;
break;
}
}
if(flag==1)
//其中有一个不在,则输入非法
{
printf("输入非法,请重新输入\n");
continue;
}
break;
}
b=CharToInt(a,l);
//把字符型转化为int型
//继续执行下面程序
return
0;
}
int
CharToInt(char
a,int
l)
{
int
i=0;
int
b=0;
for(i=l-1;i>=0;i--)
{
b+=(a[i]-'0')Ten(i);
}
return
b;
}
int
Ten(int
k)
{
int
i=0;
int
b=1;
for(i=0;i
评论
0
0
加载更多
以上就是关于shell编程,输入一个字符串,判断是否是数字。全部的内容,包括:shell编程,输入一个字符串,判断是否是数字。、C++:求判断语句,判断数组中有非数字或除+、-、*、/、(、)外其他字符,则输出错误式子、用C语言 写一个程序 判断输入的数字是否是数字字符 注意:区分数字字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)