本文将分享JS字符串转换的详细内容,并且还将对js字符串转换成数字进行详尽解释,此外,我们还将为大家带来关于C/C++字符、字符串转十六进制(支持中文字符串转换)、dartJSON字符串转换为列表字符
本文将分享JS字符串转换的详细内容,并且还将对js字符串转换成数字进行详尽解释,此外,我们还将为大家带来关于C/C++ 字符、字符串转十六进制(支持中文字符串转换)、dart JSON字符串转换为列表字符串、function的json对象转换字符串与字符串转换为对象的方法、JavaScript进阶(四)js字符串转换成数字的三种方法的相关知识,希望对你有所帮助。
本文目录一览:- JS字符串转换(js字符串转换成数字)
- C/C++ 字符、字符串转十六进制(支持中文字符串转换)
- dart JSON字符串转换为列表字符串
- function的json对象转换字符串与字符串转换为对象的方法
- JavaScript进阶(四)js字符串转换成数字的三种方法
JS字符串转换(js字符串转换成数字)
eleId.style.backgroundImage = "url(''api/login/verifyimage?r="+Math.random()+"'')";
分析:
"url(''api/login/verifyimage?r=" 这是一个字符串
"'')" 这是另一个字符串
字符串+变量等于字符串,假设随机数变量是1.0
↓↓↓↓↓
url(''api/login/verifyimage?=1.0'')
C/C++ 字符、字符串转十六进制(支持中文字符串转换)
#include <string> // std::string
#include <sstream> // std::stringstream
/**
* #purpose : 字符转十六进制
* #note : 不适用于汉字字符
* #param ch : 要转换成十六进制的字符
* #return : 接收转换后的字符串
*/
std::string chToHex(unsigned char ch)
{
const std::string hex = "0123456789ABCDEF";
std::stringstream ss;
ss << hex[ch >> 4] << hex[ch & 0xf];
return ss.str();
}
/**
* #purpose : 字符串转十六进制字符串
* #note : 可用于汉字字符串
* #param str : 要转换成十六进制的字符串
* #param separator : 十六进制字符串间的分隔符
* #return : 接收转换后的字符串
*/
std::string strToHex(std::string str, std::string separator = "")
{
const std::string hex = "0123456789ABCDEF";
std::stringstream ss;
for (std::string::size_type i = 0; i < str.size(); ++i)
ss << hex[(unsigned char)str[i] >> 4] << hex[(unsigned char)str[i] & 0xf] << separator;
return ss.str();
}
dart JSON字符串转换为列表字符串
我有一个调用json字符串数组的API,如下所示:
[ "006.01.01", "006.01.01 1090", "006.01.01 1090 1090.950", "006.01.01 1090 1090.950 052", "006.01.01 1090 1090.950 052 A", "006.01.01 1090 1090.950 052 A 521219", "006.01.01 1090 1090.950 052 A 521219", "006.01.01 1090 1090.950 052 A 521219", "006.01.01 1090 1090.950 052 A 521219", "006.01.01 1090 1090.950 052 A 521219", "006.01.01 1090 1090.950 052 B", "006.01.01 1090 1090.950 052 B 521211", "006.01.01 1090 1090.950 052 B 521211", "006.01.01 1090 1090.994", "006.01.01 1090 1090.994 001", "006.01.01 1090 1090.994 001 A", "006.01.01 1090 1090.994 001 A 511111", "006.01.01 1090 1090.994 001 A 511111", "006.01.01 1090 1090.994 001 A 511111", "006.01.01 1090 1090.994 001 A 511111"]
我打算将json转换为飞镖中的List。我尝试了以下脚本:
json.decode(response.body).cast<List<String>();
但是它不起作用,脚本应该如何正确?
答案1
小编典典解析JSON列表的结果是List<dynamic>
。的返回类型jsonDecode
为just dynamic
。
您可以将这样的列表转换List<String>
为
List<String> stringList = (jsonDecode(input) as List<dynamic>).cast<String>();
您也可以将其用作List<dynamic>
,然后将每个值分配给String
:
List<dynamic> rellyAStringList = jsonDecode(input);for (String string in reallyAStringList) { ... }
效果大致相同-从列表中取出每个元素时,将检查每个元素是否为字符串。
function的json对象转换字符串与字符串转换为对象的方法
// json对象转换成字符串
var str = JSON.stringify(json, function(key, val) {
if (typeof val === ''function'') {
return val + '''';
}
return val;
});
// json字符串转换成对象
var json = JSON.parse(str,function(k,v){
if(v.indexOf && v.indexOf(''function'') > -1){
return eval("(function(){return "+v+" })()")
}
return v;
});
eval()
是一个危险的函数, 它使用与调用者相同的权限执行代码。如果你用 eval()
运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个 eval()
被调用时的作用域,这也有可能导致一些不同方式的攻击。相似的 Function
就不容易被攻击。
eval()
通常比其他替代方法更慢,因为它必须调用 JS 解释器,而许多其他结构则可被现代 JS 引擎进行优化。
var obj =(new Function("return "+""+j2+""))();
JavaScript进阶(四)js字符串转换成数字的三种方法
js字符串转换成数字的三种方法
在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形式的.
方法主要有三种:转换函数、强制类型转换、利用js变量弱类型转换。
转换函数
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
一些示例如下:
代码如下:
立即学习“Java免费学习笔记(深入)”;
parseInt("1234blue"); //returns 1234 parseInt("0xA"); //returns 10 parseInt("22.5"); //returns 22 parseInt("blue"); //returns NaN
parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,示例如下:
代码如下:
立即学习“Java免费学习笔记(深入)”;
parseInt("AF", 16); //returns 175 parseInt("10", 2); //returns 2 parseInt("10", 8); //returns 8 parseInt("10", 10); //returns 10
如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。例如:
代码如下:
立即学习“Java免费学习笔记(深入)”;
parseInt("010"); //returns 8 parseInt("010", 8); //returns 8 parseInt("010", 10); //returns 10
parseFloat()方法与parseInt()方法的处理方式相似。
使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。
下面是使用parseFloat()方法的示例:
代码如下:
立即学习“Java免费学习笔记(深入)”;
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
强制类型转换
还可使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。
ECMAScript中可用的3种强制类型转换如下:
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。
当要转换的值是至少有一个字符的字符串、非0数字或对象(下一节将讨论这一点)时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。
可以用下面的代码段测试Boolean型的强制类型转换。
代码如下:
立即学习“Java免费学习笔记(深入)”;
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()方法的处理方式相似,只是它转换的是整个值,而不是部分值。示例如下:
代码如下:
立即学习“Java免费学习笔记(深入)”;
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()是最简单的,示例如下:
代码如下:
立即学习“Java免费学习笔记(深入)”;
var s1 = String(null); //"null" var oNull = null; var s2 = oNull.toString(); //won't work, causes an error
利用js变量弱类型转换
代码如下:
立即学习“Java免费学习笔记(深入)”;
<script> var str= '012.345 '; var x = str-0; x = x*1; </script>
上例利用了js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的。
美文美图
以上就是JavaScript进阶(四)js字符串转换成数字的三种方法的内容。
关于JS字符串转换和js字符串转换成数字的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于C/C++ 字符、字符串转十六进制(支持中文字符串转换)、dart JSON字符串转换为列表字符串、function的json对象转换字符串与字符串转换为对象的方法、JavaScript进阶(四)js字符串转换成数字的三种方法等相关内容,可以在本站寻找。
本文标签: