Js如何把一篇英文文章拆分成单词保存

fox54088 2010-07-21 09:15:25
要想实现一个功能,2篇英文文章对比。我的想法是按单词对比,先把两篇英文文章拆分成单词保存,然后用for循环进行对比,第一步就被卡住,我用的是两个textarea,在里面输入不同的内容,然后点击test()方法。首先如何把textarea里的文章的内容转为单词保存。接下来希望大家能提供一个更好的,更快的匹配算法。

<form method="POST">
<textarea id="txtName1" name="txtName1" rows="20" cols="50"></textarea>
<textarea id="txtName2" name="txtName1" rows="20" cols="50"></textarea>
<input type="button" onclick="return test()"/>
</form>
<script type="text/javascript">
var differentStyle={
remove:'yellow',
Add :'red',
update :'blue'

};
function test(){
//拆分英文文章
//分析两个的不同
}
</script>
...全文
863 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
不知楼主怎么想的.
如果是有一点不一样就算不一样的话,你直接这样就是了,还想别的什么呢:
if(document.getElementById("txtName1").value==document.getElementById("txtName2").value)
{alert("相同");}
else{alert("不同");}
wwfgu00ing 2010-07-22
  • 打赏
  • 举报
回复
if(document.getElementById("txtName1").value==document.getElementById("txtName2").value)
{alert("相同");}
else{alert("不同");}
  • 打赏
  • 举报
回复
调整一下顺序:

<form method="POST">
<textarea id="txtName1" name="txtName1" rows="20" cols="50"></textarea>
<textarea id="txtName2" name="txtName1" rows="20" cols="50"></textarea>
<input type="button" onclick="alert(test());"/>
</form>

<script type="text/javascript">
function test(){
if(document.getElementById("txtName1").value==document.getElementById("txtName2").value) { return "相同";}
if(document.getElementById("txtName1").value.indexOf(document.getElementById("txtName2").value)>-1 ||document.getElementById("txtName2").value.indexOf(document.getElementById("txtName1").value)>-1) {return "包含";}
return "不同";
}
</script>
  • 打赏
  • 举报
回复
加上部分相包容的情况:

<form method="POST">
<textarea id="txtName1" name="txtName1" rows="20" cols="50"></textarea>
<textarea id="txtName2" name="txtName1" rows="20" cols="50"></textarea>
<input type="button" onclick="alert(test());"/>
</form>

<script type="text/javascript">
function test(){
if(document.getElementById("txtName1").value.indexOf(document.getElementById("txtName2").value)>-1 ||document.getElementById("txtName2").value.indexOf(document.getElementById("txtName1").value)>-1) {return "包含";}
if(document.getElementById("txtName1").value==document.getElementById("txtName2").value)
{ return "相同";}
else{ return "不同";}
}
</script>
SpiritInside 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fox54088 的回复:]

关键是按句子的话。如何判断是句子,根据句号吗,如果把一行当作一句的话就比较麻烦,因为单词可能会换行
[/Quote]

具体的讲就是可以有一组分隔号,放在pattern里面,比如叹号,句号,问号等等,通过找到分隔号后就可以切断存在数组里

分单词其实更加简单,基本就是空格了

如何写那个pattern有点学问,网上很多资料可以看看
SpiritInside 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fox54088 的回复:]

关键是按句子的话。如何判断是句子,根据句号吗,如果把一行当作一句的话就比较麻烦,因为单词可能会换行
[/Quote]

php 有正则表达式

去查查preg_split
sohighthesky 2010-07-21
  • 打赏
  • 举报
回复
//拆分成单词:
str.split(/\s+/);//返回单词数组
fox54088 2010-07-21
  • 打赏
  • 举报
回复
关键是按句子的话。如何判断是句子,根据句号吗,如果把一行当作一句的话就比较麻烦,因为单词可能会换行
SpiritInside 2010-07-21
  • 打赏
  • 举报
回复

那我来出个主意,不知合不合适

我觉得可以先把段分为句子,再将句子分为词好一些吧

就是设计一个二维数组,第一维都是句子,然后第二位就是句子分隔后剩下的词了。

这样计数比较方便,你不至于出现从某句的一半到另一句的一半这样的标示

至于效率,都差不多了,二维数组比较好index.
fox54088 2010-07-21
  • 打赏
  • 举报
回复
来个人帮帮忙啊
fox54088 2010-07-21
  • 打赏
  • 举报
回复
是的一点不一样就是不一样的
SpiritInside 2010-07-21
  • 打赏
  • 举报
回复
对比包括不包括标点符号呢?是否包括大小写呢?

是仅仅比较单词?还是连格式都要比较?

比如"This is csdn" 与 "This is csdn" 是否一样?

还有

"this is csdn" 与 "This is csdn" 是否一样?
fox54088 2010-07-21
  • 打赏
  • 举报
回复
看来大家都很忙,都没时间帮我看下,自己在顶下
fox54088 2010-07-21
  • 打赏
  • 举报
回复
楼上的可以给一个解决方案吗
zoujp_xyz 2010-07-21
  • 打赏
  • 举报
回复
个人感觉拆成单词来比较是效率较差的方法。毕竟要循环2个数组

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧