有人问过有关文字区域字数的其他问题,但这些问题并不是这个问题的重复:
我要做的是在用户点击按钮时调用JavaScript / jQuery函数。该函数获取textarea的值并检查其中的所有字符。然后检查两个字符是否具有相同的出现次数。在函数中我需要使用if-else语句。
实施例:
如果输入包含3x [
和3x ]
:if (a.length == b.length) {}
(= true
)
如果输入有3x [
和2x ]
:if (a.length == b.length) {}
(= false
)
但我不太确定如何计算个别角色。我猜一些正则表达式和match
,但以下似乎不起作用:
var a = str.match(/\[+ /g),
b = str.match(/\[+ /g);
if (a.length == b.length) {//do something}
这是fiddle。如您所见,计数不正确。
答案 0 :(得分:1)
怎么样:
'a[b][ca[]de'.match(/\[/g).length;
<强>输出:强>
3
正如所料。
答案 1 :(得分:1)
var str = 'What I am trying to do is write a JavaScript/jQuery function is called on the user clicking on a button. The function takes the value of a textarea and checks all the characters that are in there. And then check whether two characters have the same amount of occurrences. In the function I need to use an if-else statement.'
var matchFrequency = function(a,b, text) {
return text.split(a).length == text.split(b).length
}
matchFrequency('a','a',str)
//true
matchFrequency('a','b',str)
//false
修改强>
var str = 'Hello [ Here are ] some random [ characters ]] And I need to [ count [ and ]'
matchFrequency('[',']',str)
//output - true
答案 2 :(得分:0)
这会对你有用吗?
var aOccurrences = str.split("a").length - 1,
bOccurrences = str.split("b").length - 1;
if(aOccurrences === bOccurrences) {
//doSomething
}
答案 3 :(得分:0)
创建一个用'a'索引为'z'的数组。
例如:
var arr=[];
用0初始化数组。 我在这里给出代码片段,我想你可以把它转换为Javascript
for(i=0; i<='z'-'a';i++) // 'z'-'a' means ASCII value of 'z' minus ASCII value of 'a'
arr[i] = 0;
string text_area = the text area from input
for(i =0; i<text_area.length ; i++) //text_area.length = length of your text area
if(text_area[i]>='a'&&text_area[i]<='z') // considering only lower case letters for now
arr[text_area[i]-'a'] = arr[text_area[i]-'a'] + 1; //if a character is found,add 1 to count
我们准备好了arr []。现在,如果我们想检查字符'C1'的数量是否等于字符'C2'的数量,我们需要像这样检查
if(arr['C1'-'a']==arr['C2'-'a'])
希望这会有所帮助。
答案 4 :(得分:-1)
我的回答只是部分,因为我不知道如何在javascript / JQuery下处理正则表达式。 我会用java编写它。 如果匹配a和b的每个出现,则可以比较两者:
Pattern pa=Pattern.compile("a");
Matcher ma=pa.match(str);
Pattern pb=Pattern.compile("b");
Matcher mb=pb.match(str);
int counta=0;
int countb=0;
while(ma.find())
counta++;
while(mb.find())
countb++;
boolean result=counta==countb;
这是结构的概念。希望它有所帮助。