如何将一个字符串转换成 运算式

作者&投稿:祗律 (若有异议请与网页底部的电邮联系)
如何将文本字符串转换成可运算的数字~

方法主要有三种
转换函数、强制类型转换、利用js变量弱类型转换。
1. 转换函数:
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
一些示例如下:

复制代码代码如下:

parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN


parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,示例如下:

复制代码代码如下:

parseInt("AF", 16); //returns 175
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10


如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。例如:

复制代码代码如下:

parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10


parseFloat()方法与parseInt()方法的处理方式相似。
使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。
下面是使用parseFloat()方法的示例:

复制代码代码如下:

parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN


2. 强制类型转换
还可使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。
ECMAScript中可用的3种强制类型转换如下:
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。
当要转换的值是至少有一个字符的字符串、非0数字或对象(下一节将讨论这一点)时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。
可以用下面的代码段测试Boolean型的强制类型转换。

复制代码代码如下:

Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object


Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。示例如下:

复制代码代码如下:

用  法 结  果
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100


最后一种强制类型转换方法String()是最简单的,示例如下:

复制代码代码如下:

var s1 = String(null); //"null"
var oNull = null;
var s2 = oNull.toString(); //won't work, causes an error


3. 利用js变量弱类型转换
举个小例子,一看,就会明白了。

复制代码代码如下:


var str= '012.345 ';
var x = str-0;
x = x*1;



上例利用了js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的

C语言中,可以使用atoi函数将字符串转换为数字,如atoi("123")可以得到数字123。
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。
如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回0。特别注意,该函数要求被转换的字符串是按十进制数理解的。atoi输入的字符串对应数字存在大小限制(与int类型大小有关),若其过大可能报错-1。

扩展资料:
C语言中数字转化为字符串的方案:
使用sprintf函数来实现,如sprintf("%d", 123)可以得到字符串"123"。
sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制。
参考资料来源:百度百科-atoi

对字符串进行分析。把运算符号和数字挑出来,把数字转换成int型,然后根据运算符进行计算。

/* Program 7.16 An improved calculator */
#include <stdio.h> /* Standard input/output */
#include <string.h> /* For string functions */
#include <ctype.h> /* For classifying characters */
#include <stdlib.h> /* For converting strings to numeric values */
#include <math.h> /* For power() function */
#define BUFFER_LEN 256 /* Length of input buffer */

int main(void)
{
char input[BUFFER_LEN]; /* Input expression */
char number_string[30]; /* Stores a number string from input */
char op = 0; /* Stores an operator */

unsigned int index = 0; /* Index of the current character in input */
unsigned int to = 0; /* To index for copying input to itself */
size_t input_length = 0; /* Length of the string in input */
unsigned int number_length = 0; /* Length of the string in number_string */
double result = 0.0; /* The result of an operation */
double number = 0.0; /* Stores the value of number_string */

printf("\nTo use this calculator, enter any expression with"
" or without spaces");
printf("\nAn expression may include the operators:");
printf("\n +, -, *, /, %%, or ^(raise to a power).");
printf("\nUse = at the beginning of a line to operate on ");
printf("\nthe result of the previous calculation.");
printf("\nUse quit by itself to stop the calculator.\n\n");

/* The main calculator loop */
while(strcmp(fgets(input, BUFFER_LEN, stdin), "quit\n") != 0)
{
input_length = strlen(input); /* Get the input string length */
input[--input_length] = '\0'; /* Remove newline at the end */

/* Remove all spaces from the input by copying the string to itself */
/* including the string terminating character */
for(to = 0, index = 0 ; index<=input_length ; index++)
if(*(input+index) != ' ') /* If it is not a space */
*(input+to++) = *(input+index); /* Copy the character */

input_length = strlen(input); /* Get the new string length */
index = 0; /* Start at the first character */

if(input[index]== '=') /* Is there =? */
index++; /* Yes so skip over it */
else
{ /* No - look for the left operand */
/* Look for a number that is the left operand for the 1st operator */

/* Check for sign and copy it */
number_length = 0; /* Initialize length */
if(input[index]=='+' || input[index]=='-') /* Is it + or -? */
*(number_string+number_length++) = *(input+index++); /* Yes so copy it */

/* Copy all following digits */
for( ; isdigit(*(input+index)) ; index++) /* Is it a digit? */
*(number_string+number_length++) = *(input+index); /* Yes - Copy it */

/* copy any fractional part */
if(*(input+index)=='.') /* Is it decimal point? */
{ /* Yes so copy the decimal point and the following digits */
*(number_string+number_length++) = *(input+index++); /* Copy point */

for( ; isdigit(*(input+index)) ; index++) /* For each digit */
*(number_string+number_length++) = *(input+index); /* copy it */
}
*(number_string+number_length) = '\0'; /* Append string terminator */

/* If we have a left operand, the length of number_string */
/* will be > 0. In this case convert to a double so we */
/* can use it in the calculation */
if(number_length>0)
result = atof(number_string); /* Store first number as result */
}

/* Now look for 'op number' combinations */
for(;index < input_length;)
{
op = *(input+index++); /* Get the operator */
/* Copy the next operand and store it in number */
number_length = 0; /* Initialize the length */

/* Check for sign and copy it */
if(input[index]=='+' || input[index]=='-') /* Is it + or -? */
*(number_string+number_length++) = *(input+index++); /* Yes - copy it. */

/* Copy all following digits */
for( ; isdigit(*(input+index)) ; index++) /* For each digit */
*(number_string+number_length++) = *(input+index); /* copy it. */

/* copy any fractional part */
if(*(input+index)=='.') /* Is it a decimal point? */
{ /* Copy the decimal point and the following digits */
/* Copy point */
*(number_string+number_length++) = *(input+index++);
for( ; isdigit(*(input+index)) ; index++) /* For each digit */
*(number_string+number_length++) = *(input+index); /* copy it. */
}
*(number_string+number_length) = '\0'; /* terminate string */

/* Convert to a double so we can use it in the calculation */
number = atof(number_string);

/* Execute operation, as 'result op= number' */
switch(op)
{
case '+': /* Addition */
result += number;
break;
case '-': /* Subtraction */
result -= number;
break;
case '*': /* Multiplication */
result *= number;
break;
case '/': /* Division */
/* Check second operand for zero */
if(number == 0)
printf("\n\n\aDivision by zero error!\n");
else
result /= number;
break;
case '%': /* Modulus operator - remainder */
/* Check second operand for zero */
if((long)number == 0)
printf("\n\n\aDivision by zero error!\n");
else
result = (double)((long)result % (long)number);
break;
case '^': /* Raise to a power */
result = pow(result, number);
break;
default: /* Invalid operation or bad input */
printf("\n\n\aIllegal operation!\n");
break;
}
}
printf("= %f\n", result); /* Output the result */
}
return 0;
}
程序不难,但是量大,我直接从书里复制过来给你参考。

没有


java编程:输入一个字符串,将其转换为另一个字符串。
由于string不是基本数据类型,所以也就无法通过String str1 = str2;这样的代码去拷贝一个字符串str2;但可以通过以下2中方式去拷贝 第一种,创建新的string对象,String str1 = new String(str2);这样java就会创建一个新的string对象,其内容就是str2;这也是相当于拷贝了;第二种,调用string对象...

java中如何将一个字符串转换成一个字符数组
java 中要将一个字符串转换成一个字符数组需要使用 String 类中提供的 toCharArray() 方法进行操作.例:String str = "abcde";char[] ch = str.toCharArray();

如何将一个可选字符串转换为 NSString
转换:NSString *string = @“";\/\/1、字符串转换成NSData NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];\/\/2、NSData转换成字符串 NSString * inString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];...

c语言:如何将字符串中指定的字符替换为另一个指定字符
版本:V0.2 \/ char*strrpc(char*str,char*oldstr,char*newstr){ char bstr[strlen(str)];\/\/转换缓冲区 memset(bstr,0,sizeof(bstr));for(int i=0;i<strlen(str);i++){ if(!strncmp(str+i,oldstr,strlen(oldstr))){\/\/查找目标字符串 strcat(bstr,newstr);i+=strlen(oldstr)-1;...

C语言如何将字符串转换到对应的01二进制的字符串,比如AB字符就变为...
如下子程序就可以将一个字符的ASCII码按二进制形式输出:void binarystring(char c){ int i;for(i=0;i<8;i++){ if (c & 0x80) putchar('1'); else putchar('0');c <<= 1;} } 如上定义后,只要调用 binarystring('A');binarystring('B');putchar('\\n');即可输出 01000001010...

如何将一个字符串转换成一个struct
通过格式操作使任意类型的数据转换成一个字符串

在JAVA中如何将一个字符串转换为国际编码
原来是要转化成unicode啊,试试下面这个方法:public static String toUnicode(String strText)throws UnsupportedEncodingException { char c;String strRet = "";int intAsc;String strHex;for (int i = 0; i < strText.length(); i++) { c = strText.charAt(i);intAsc = (int) c;if (...

c#怎么样将一个字符串转换成一个小数
试一下用Convert进行转换吧,也许能帮上你的忙,例如:string num = "12.34";\/\/定义一个字符串 decimal decnumber = Convert.ToDecimal(num);\/\/将字符串转换为小数

编程:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换...
思路:先判定字符串第一位是否为符号,“+”或没有则符号为正(1),“-”则符号为负(-1)。然后每一位的数值是ASCII值减去48。计算公式为:123=12*10+3=(1*10+2)*10+3.include <stdio.h> int atoi_(char *p){int a = 0;int b = 0;int i = 0;int j = 0;int sign = 1;...

JAVA求助啊 将一个字符串转换成整数,将一个整数转换成字符串
1.将一个字符串转换成整数:int n = Integer.parseInt("123");\/\/将字符串转化成整形 String s = String.valueOf(int a );\/\/将整形转化为字符串 2.将一个整数转换成字符串:s = ""+4567;就可以了,它会自动转换的 http:\/\/www.baidu.com\/s?wd=52095384130 ...

临翔区13752647758: 如何将一个字符串转换成 运算式 -
温复对氨: /* Program 7.16 An improved calculator */#include /* Standard input/output */#include /* For string functions */#include /* For classifying characters */#include /* For converting strings to numeric values */#include /* For power() function */#define ...

临翔区13752647758: 您好,如何将字符串表达式转换成算式? -
温复对氨: 可使用脚本语言直接完成四则运算 比如:你有字符串 1+4*3.5+(120-5)/5 可使用VbScript脚本,直接计算上面那个字符串的值,给你VB的代码Dim a As New ScriptControl a.Language = "VbScript" Dim s As String Dim v As Double s = "1+4*3.5+(120-5)/5" v = a.Eval(s) MsgBox v上面计算的结果是 38

临翔区13752647758: C语言如何将字符串转换成算式 -
温复对氨: 利用栈可以把中序算式变换成后序算式,然后再将转换后的存入二叉树中,对节点里的数字字符串做类型转换,再对树进行递归计算,这基本就差不多了吧.根据已知算式优先级的运算表达式求运算结果可以基于数据栈和运算符栈来实现,这部分到不是难点,算法例子也很多,LZ可以上网搜一下;这个问题的难点应该在判断任意字符串元素的算式优先级上,这部分就需要用到词法分析了,构建一个有限自动机和操作符优先级表来帮助区分是数字还是运算符,以及运算符的优先级等等

临翔区13752647758: 如何通过字符串来生成计算表达式 -
温复对氨: 我想到的是 先把字符串分解 判断 + - * / () 分解开后在把数字转为int 在合成方程式计算结果

临翔区13752647758: c语言怎么将字符串转换成数学式子就是有一个字符串里 -
温复对氨: 1、C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字. 头文件:stdlib.h 函数原型:int atoi(const char* nptr);2、举个例子: char *str="123"; int num=atoi(str); 执行后,num的值被初始化为123

临翔区13752647758: 如何计算一个字符串表示的计算式 -
温复对氨: 1 读入字符串;2 解析字符串,从字符串中解析出操作数,操作符,以及计算顺序.3 对解析出的表达式进行计算.4 输出结果.第2步为重点.主要的工作量和代码均在此步中.一般不会把字符串解析成中缀表达式,而是解析成前缀或后缀表达式,这样可以方便做下一步的计算.

临翔区13752647758: 如何通过字符串来生成计算表达式
温复对氨: 这个涉及表达式的解释,一般有两种方法实现:1.递归;2.堆栈.通常将表达式的分解为数字和运行符

临翔区13752647758: 如何将文本字符串转换成可运算的数字 -
温复对氨: 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行...

临翔区13752647758: 在vb中怎么把输入的字符串转换为算式? -
温复对氨: 直接利用VB6提供的 Script Control 控件来做就行了,很简单又支持特别多的功能.如你所述要计算2*4,只需用此控件的eval方法,如 Ans=Script1.Eval("2*4") 就行了.当然用文本控件作为输入如:Ans=Script1.Eval(Text1.text) .此控件支持复杂的数学运算式,同时也支持VB其它的属性、方法等的调用.

临翔区13752647758: 如何将一个字符串表达式转换成一个数值表达式 -
温复对氨: 字符串转换数字用parseInt函数parseInt(string):函数string始解析返整数举例:parseInt('一二三'):返一二三(int);parseInt('一二三四xxx'):返一二三四(int);解析数字则返NaN值用isNaN()函数检测;举例:vari=parseInt('abc');if(isNaN(i)...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网