![](/img/trans.png)
[英]How to count occurrence of multiple sub-string in a long string with JavaScript
[英]Find the length of a string after the first occurrence of a defined sub-string
所以,我在html中有这个textarea,我正在尝试实现类似twitter的东西。
每次用户键入“#”时,我要突出显示单词,并在单词末尾显示字母计数。 例如,“您好,我叫#user123(7),您叫什么名字?” 我已经做好了突出显示的工作,但是我现在在信件计数部分迷失了。 这是我的HTML
<div id="inputback" class="format"></div>
<textarea id="input" class="format"></textarea>
Java脚本
var textarea = document.getElementById("input");
var hashflag = 0 ;
var textlength;
textarea.onkeydown = function(e){
textarea.style.height = "";
textarea.style.height = textarea.scrollHeight + "px";
textlength = textarea.value.length;
var str = textarea.value;
str = str.replace(/(\s)([#]\w*)/g, "$1<b>$2</b>");
$('#inputback').html(str);
}
这是我的CSS
.format
{
font: 9pt Consolas;
}
#input { border: 1px solid black; background: transparent; z-index: 10; }
#inputback {
color: transparent;
position: absolute;
top: 0px
}
#inputback b
{
color: black;
background-color: #808080;
font-weight: normal;
}
这是我所完成的工作。 http://jsfiddle.net/gjqWy/115/
先感谢您!
PS我不想使用任何插件或jQuery的。 只是普通的Javascript / html / css
.replace
也可以将函数作为第二个参数:
str = str.replace(/(^|\s)#(\w+)/g,function(_,a,b) {
// _ represents the full match - we don't need it here
// a is the first subpattern
// b is the second subpattern
return a+"<b>#"+b+"</b>("+b.length+")";
});
我对您的正则表达式做了一些调整。 现在,即使哈希位于字符串的开头,它也可以工作,而且我将哈希从捕获的组中取出,例如a)它是常量,并且b)您想要第二个捕获组的长度,因此更轻松。
<form id="testForm">
<input id="A1" type="text"></input>
<div id="vsA1" class="inputTextSummery">charaters reamining: 40</div>
</form>
<script type="text/javascript">
function wordCount(_input, _limit, _summary)
{
var limit = _limit; //set limit of charater
var inputDiv = "#"+_input; //inout div id
var displayDiv = "#"+_summary; //display summary div id
var currentWordCount = 0; //defualt current charater count
$(inputDiv).keyup(function(){ //
currentWordCount = $(inputDiv).val().length;
var charLeft = limit - currentWordCount;
if(charLeft >= 0){
$(displayDiv).html("charaters reamining: "+ (limit - currentWordCount));
}else{
$(displayDiv).html("Input has exceed limit!");
}
});
}
wordCount("A1", 40, "vsA1");
使用JavaScript .indexOf
方法在表单值中查找第一个出现的#。 它所做的是在您要检查的字符串中找到“#”的第一个匹配项,并返回它的位置。
例如
var string = "This is stackoverflow";
var start = string.indexOf('is'); //Will return as 5
得到排序后,您将需要执行所有操作以获取其后的值。 像这样
var string = "This is stackoverflow";
var start = string.indexOf('is') + 2; //7 (You add 2 because its a 2 letter word)
var end = string.length; //20
var newstring = string.substr(start, end);
您可以通过使用document.getElementById('inputidhere').value;
替换var字符串来获取此信息并将其应用于您的论坛document.getElementById('inputidhere').value;
然后从那里走!
祝好运! 希望这对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.