计算textarea中的特定字符

时间:2014-06-22 09:19:47

标签: javascript jquery regex match

有人问过有关文字区域字数的其他问题,但这些问题并不是这个问题的重复:

我要做的是在用户点击按钮时调用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。如您所见,计数不正确。

5 个答案:

答案 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
}

DEMO

答案 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;

这是结构的概念。希望它有所帮助。