上节课咱们讲到了数据类型好比人的职业一样,那么人一辈子有可能在职业生涯中转型,比如程序员转型成销售人员,医生转型成司机。那么数据类型转换就差不多这个意思,比如一个数值类型想要转换成字符串类型,那么我们就要采用数据类型转换了。
<script type="text/javascript"> var str='1';//字符串类型 var num1=Number(str);//变成了数值类型 var num2=parseInt(str);//变成了数值类型 var num3=parseFloat(str);//变成了数值类型 console.log(typeof(num1) , typeof(num2) ,typeof(num3)) </script>
2. 其他类型转换成【字符串类型】:使用String、toString
<script type="text/javascript"> var num=123;//数值类型 var str1=String(num);//变成了字符串类型 var str2=num.toString();//变成了字符串类型 console.log(typeof(str1) , typeof(str2) ) </script>
3. 其他类型转换成【布尔类型】:使用Boolean
<script type="text/javascript"> var num=123;//数值类型 var bool1=Boolean(num);//变成了布尔类型 console.log(typeof(bool1)) </script>
法一:使用StringBuilder或StringBuffer
最简单且高效的方法是使用StringBuilder或StringBuffer类来反转字符串。这两个类提供了reverse()方法,可以方便地实现字符串的反转。
String str="Hello, World!";
StringBuilder sb=new StringBuilder(str);
String reversedStr=sb.reverse().toString();
System.out.println(reversedStr);
通过调用StringBuilder的reverse()方法,我们可以得到一个反转后的字符串。注意,由于reverse()方法返回的是StringBuilder对象,需要通过toString()方法将其转换成字符串。
方法二:使用递归
递归是一种有效的反转字符串的方法。我们可以定义一个递归函数,每次取字符串的最后一个字符,并将其与剩余部分连接起来。
public static String reverseString(String str) {
if (str.isEmpty())
return str;
return reverseString(str.substring(1)) + str.charAt(0);
}
String str="Hello, World!";
String reversedStr=reverseString(str);
System.out.println(reversedStr);
通过不断调用自身并取子字符串,我们可以逐步反转整个字符串。这种方法虽然简单,但当处理大量字符串时可能会导致堆栈溢出的问题,因此需谨慎使用。
方法三:使用字符数组
另一种常见的反转字符串的方法是将字符串转换为字符数组,然后利用循环或交换元素的方式实现反转。
public static String reverseString(String str) {
char[] charArray=str.toCharArray();
int start=0;
int end=str.length() - 1;
while (start < end) {
char temp=charArray[start];
charArray[start]=charArray[end];
charArray[end]=temp;
start++;
end--;
}
return new String(charArray);
}
String str="Hello, World!";
String reversedStr=reverseString(str);
System.out.println(reversedStr);
将字符串转换为字符数组后,我们可以使用两个指针分别指向数组的首尾,并依次交换对应位置的元素。通过循环遍历,最终得到反转后的字符串。
方法四:使用Collections.reverse()
如果你希望使用Java提供的现成方法来反转字符串,可以利用Collections类的reverse()方法。该方法可以反转List类型的集合,因此我们可以先将字符串转换为字符列表,然后调用reverse()方法进行反转。
String str="Hello, World!";
List charList=new ArrayList<>();
for (char c : str.toCharArray()) {
charList.add(c);
}
Collections.reverse(charList);
StringBuilder sb=new StringBuilder();
for (Character c : charList) {
sb.append(c);
}
String reversedStr=sb.toString();
System.out.println(reversedStr);
通过将字符串转换为字符列表,并利用Collections.reverse()方法对其进行反转,我们可以得到一个反转后的字符串。最后,使用StringBuilder来拼接字符列表中的元素,得到最终结果。
HTML标签相关的字符串格式化
string nl2br ( string $string )
nl2br() 就是将\n 替换成 <br> //javascript对\n才能够执行换行,对</br>是不能执行换行
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。
string htmlspecialchars(string,quotestyle,[character-set])
转换以下字符及对应的实体
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
第二个参数: ENT_COMPAT 只转换双引号, 保留单引号, 为默认值 compat: 兼容性
ENT_QUOTES 同时转换两种引号 quotes: 引号
ENT_NOQUOTES 不对引号进行转换
<html>
<body>
<?php
$str="John & \" 'Adams'";
echo htmlspecialchars($str, ENT_COMPAT);
echo "<br />";
echo htmlspecialchars($str, ENT_QUOTES);
echo "<br />";
echo htmlspecialchars($str, ENT_NOQUOTES);
?>
</body>
</html>
输出结果:John & " 'Adams'
John & " 'Adams'
John & " 'Adams'
htmlentities() 可以将所有的非ASCII码字符转换为对应的实体代码;除字母、数字、\外, 汉字和键盘上其他字符都转换
<?php
$str="A 'quote' \" is <b>bold</b>" ;
echo htmlentities ( $str ); // 输出后源代码: A 'quote' is <b>bold</b>
echo htmlentities ( $str , ENT_QUOTES ); // 输出后源代码: A 'quote' is <b>bold</b>
?>
返回的结果:A 'quote' "is <b>bold</b>
A 'quote' "is <b>bold</b>
注意: htmlspecialchars()和htmlentities作用直接输出HTML脚本
htmlspecialchars()和htmlentities()函数对于转义字符"\"处理,不会转义实体代码,要么当转义字符对待,要么原样输出;
PHP中htmlentities和htmlspecialchars的区别
这两个函数的功能都是转换字符为HTML字符编码, 特别是url和代码字符串。防止字符标记被浏览器执行。
使用中文时没什么区别, 但htmlentities会格式化中文字符使得中文输入是乱码。
htmlentities转换所有的html标记, htmlspecialchars只格式化& ' " < 和 > 这几个特殊符号
addslashes() 在指定的预定义字符前添加反斜杠。
这些预定义字符是:单引号 (') 双引号 (") 反斜杠 (\) NULL字符(\x00)
提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。
注释:默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE数据自动运行 addslashes()。
不要对已经被magic_quotes_gpc转义过的字符串使用 addslashes(),因为这样会导致双层转义。
遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。(如:$c=(!get_magic_quotes_gpc())?addslashes($c):$c;)
在本例中,我们要向字符串中的预定义字符添加反斜杠:
<?php
$str="Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>
输出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.
<?php
header("Content-type:text/html; charset=utf-8");
$str="wo are \x0a studying \x00 php";
echo $str;
echo "<br>";
echo addslashes($str);
?>
输出:
wo are studying php
wo are studying >wo are studying \0 php< php
stripslashes() 删除反斜线("\")
在提交的表单数据中 ' " \ 等字符前被自动加上一个\ ,这是配置文件php.ini中选项magic_quotes_gpc在起作用,
默认是打开的,如果不处理则将数据保存到数据库时,有可能会被数据库误当成控制符号而引起错误。
通常htmlspecialchars()和stripslashes()函数复合的方式,联合处理表单中的提交的数据htmlspecialchars(stripslashes())
strip_tags()
string strip_tags ( string $str [, string $allowable_tags ] )
剥去 HTML、XML 以及 PHP 的标签。
<?php
echo strip_tags("Hello <b><i>world!</i></b>","<b>");
?>
输出结果:Hello world!
实例:
<?php
$str="<b>webserver;</b> & \ 'Linux' & Apache";
echo "$str"; //直接输出
echo "<br/>";
echo htmlspecialchars($str,ENT_COMPAT); //只转换双引号,为默认参数
echo "<br />";
echo htmlspecialchars($str,ENT_NOQUOTES); //不对引号进行转换
echo "<br />";
echo htmlspecialchars($str,ENT_QUOTES); //同时转换单引号和双引号
echo "<br />";
echo htmlentities($str); //将所有的非ASCII码字符转换为对应的实体代码
echo "<br />";
echo addslashes($str); //将" ' \ 字符前添加反斜线
echo "<br />";
echo stripslashes($str); //删除反斜线
echo "<br />";
echo strip_tags($str); //删除<html>标记
?>
输出结果:
webserver; & \ 'Linux' & Apache
*请认真填写需求信息,我们会在24小时内与您取得联系。