不是很懂JS这块,麻烦帮修改的有两个:
1、这个js会将一段话/词给拆分开了,会将第一个字逐渐组合后面的字,然后又用第二个字再来组合后面的字如此反复。
这里想让它在第一个字组合到最后一个字后就停止组合,像下图红框那样就停止再次组合,也就是第二个字就不再组合后面的字。
2、现在这个是以输入框的形式需要点击才能进行拆分,怎么修改成根据变量来自动拆分不在需要点击。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>拆词</title>
<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
</head>
<body>
<!-- 点击拆分 -->
<div>
<input type="text" id="keyword" value="自动拆分词语" />
<button onclick="example()">拆词</button>
</div>
<!-- 根据变量拆分,前面的点击拆分将取消 -->
<div>
<p>这后续将会是一个变量</p>
</div>
<div id="content">
拆分后显示:<br />
<span id = 'counters'></span>
</div>
<script>
function example(){
//获取输入框
var keyword = $("#keyword");
//获取内容显示区域
var contents = $("#counters");
//获取输入框的值
var keywordval = keyword.val();
//调用拆分方法
var sount=ParsingWords(keywordval);
//写出值
contents.html(sount);
}
function ParsingWords(str){
var sount='';
//判断是否为单字符语种
if(/[\u4e00-\u9fa5]/.test(str)){
var date = str.split(',');
for(var d = 0;d<date.length;d++){
//alert(date[d].length)
for(var i=0 ; i<=date[d].length ;i++){
for(var j=i ; j<=date[d].length ;j++){
if(date[d].slice(i,j).length==0){
continue;
}
sount+=date[d].slice(i,j)+'/';
}
}
}
}else{
var date = str.split(',');
for(var d = 0;d<date.length;d++){
var fz = date[d].split(' ');
//alert(fz);
for(var i=0 ; i<fz.length ;i++){
for(var j=i ; j<fz.length ;j++){
var ls = ''
for(var k=i;k<=j;k++){
ls+=fz[k]+' ';
}
sount+=ls.trim()+'/'
}
}
}
}
return sount
}
</script>
</body>
</html>
把第44行那个 for 循环去掉,然后它里面那个 for 循环的 j 给初值为0,如图:
第2个,input里面添加:onkeyup="example()"
或者,对于汉字输入过程中,暂时还是拼音字母的时候不分词,在<script>中添加以下内容,然后input的onkeyup改为"autoParsingWords(this.value)":
var patternLetter = new RegExp(".*[A-Za-z]+");
function autoParsingWords(str) {
if(!patternLetter.test(str)){
example()
}
}