java 字符表达方式

发布网友 发布时间:2022-04-20 17:48

我来回答

5个回答

热心网友 时间:2023-07-22 16:08

1、LZ说的应该是JavaScript中的replace 方法:
第一个参数是一个正则表达式,第二个参数是替换文本;作用是将q中匹配该正则表达式的子串用第二个参数替换掉;

对于此正则表达式:是将"<...>"(单书名号以及其中的内容)替换为 空串;
------------------------
好吧- -,偶没说清楚:以下补充:
这里的 /<[^<>]+>/g 是一个正则表达式规则,就是这个规定了程序如何匹配字符串,其中 / 表示规则的开始,/g 表示规则结束;中间的字符从左到右: < 表示左单书名号;[^…] 匹配不在括号内的任意字符所以这里的 [^<>] 表示一个不是 < 并且不是 > 的字符,+ 表示这个字符出现一次或多次;< 表示左单书名号;所以这个规则联合起来就匹配了一个单书名号以及其中的内容,而这里的 replace 方法就是将所有匹配以上规则的的串用空串代替,而空串不会有任何显示效果,实际上也就是把这个串删除了...

------------------------

以下是测试页面:
---------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test Regex</title>
<script type="text/javascript">
var q = "a<hello java!>b";
alert(q);
var d = q.replace(/<[^<>]+>/g,"");
alert(d);
</script>

</head>

<body>

</body>
</html>
---------------

2、Java中的String类中并没有这个方法,String类中只有以下两个重载的replace 方法
------------------
(1)String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
(2)String replace(CharSequence target, CharSequence replacement)
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
------------------
两者的第一个参数都和LZ所描述的不匹配- -

3、以下是关于JavaScript中replace 方法的一些资料:
-------------------
replace 方法
返回根据正则表达式进行文字替换后的字符串的复制。

stringObj.replace(rgExp, replaceText)

参数
stringObj

必选项。要执行该替换的 String 对象或字符串文字。该字符串不会被 replace 方法修改。

rgExp

必选项。为包含正则表达式模式或可用标志的正则表达式对象。也可以是 String 对象或文字。如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进行精确的查找;不要尝试将字符串转化为正则表达式。

replaceText

必选项。是一个String 对象或字符串文字,对于stringObj 中每个匹配 rgExp 中的位置都用该对象所包含的文字加以替换。在 Jscript 5.5 或更新版本中,replaceText 参数也可以是返回替换文本的函数。

说明
replace 方法的结果是一个完成了指定替换的 stringObj 对象的复制。

示例
下面的示例演示了 replace 方法将第一次出现的单词 "The" 替换为单词 "A" 的用法。

function ReplaceDemo(){
var r, re; // 声明变量。
var ss = "The man hit the ball with the bat.\n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; // 创建正则表达式模式。
r = ss.replace(re, "A"); // 用 "A" 替换 "The"。
return(r); // 返回替换后的字符串。
}
另外, replace 方法也可以替换模式中的子表达式。 下面的范例演示了交换字符串中的每一对单词:

function ReplaceDemo(){
var r, re; // 声明变量。
var ss = "The rain in Spain falls mainly in the plain.";
re = /(\S+)(\s+)(\S+)/g; // 创建正则表达式模式。
r = ss.replace(re, "$3$2$1"); // 交换每一对单词。
return(r); // 返回结果字符串。
}
下面的示例(在 JScript 5.5 及更新版本中执行)执行的是从华氏到摄氏的转换,它演示了使用函数作为 replaceText。要想知道该函数是如何工作的,传递一个包含数值的字符串,数值后要紧跟 "F" (例如 "Water boils at 212")。

function f2c(s) {
var test = /(\d+(\.\d*)?)F\b/g; // 初始化模式。
return(s.replace
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));

-------------------

热心网友 时间:2023-07-22 16:08

这个是过滤所有以 < 开始,以 > 结束的字符串。 /g代表:匹配所有匹配的字串。

这个一般是除去网页源码中的标签。
比如如果q="<html><body>hello world!</body></html>"
那么经过上述语句,结果为:
"hello world!"

答案补充:
[]中括号 是正则表达式的语法,它可以匹配一个字符,比如[a]可以匹配字符a;[ab]是指匹配字符a或者b,[<>]就是匹配 < 或者 >。

^ 这个符号也是正则表达式的关键字,^表示“非”。所以[^<>]就是匹配:除了 < 和 > 的任意一个字符。

+ 这个关键字表示一个或多个的意思。a+表示匹配多个连续的a.
[ab]+ 表示匹配多个连续的ab组合,它们可以是aabba、aaab、bbbab等等。

所以[^<>]是匹配除了 < 和 > 的任意一个字符,那么[^<>]+就是匹配除了 < 和 > 的任意多个字符。

>没有特殊含义,就是普通的>

这回够详细了吧,呵呵。

热心网友 时间:2023-07-22 16:08

[] 方括号用来匹配单个字符
^ 符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。
[^<>] 表示非"<"也非">"的任一字符。
+ 表示+号前面的字符出现1次或多次。
<[^<>]+> 表示用"<"开头,用">"结尾的一段文字,尖号中间有一到多个非"<"也非">"的字符。例如 <project ....>、<123 .....>,但是不匹配<>,因为尖号中间没有字符,表达式要求至少有一个,更不匹配123,因为是非尖号开头的字符串。
更多正则表达式语法,请参考

参考资料:http://hi.baidu.com/chinagenius/blog/item/1b24fc972a3f9b6b55fb9696.html

热心网友 时间:2023-07-22 16:09

汗,我以为楼主说的是java中string的replace方法

热心网友 时间:2023-07-22 16:10

这是正则表达式, 我也不怎懂的,你百度一下
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com