Javascript 计算文本区域中的特定字符数

Javascript 计算文本区域中的特定字符数,javascript,jquery,regex,match,Javascript,Jquery,Regex,Match,关于文本区域中的字数,还提出了其他问题,但这些问题与本问题不相同: 我试图做的是编写一个JavaScript/jQuery函数,在用户单击按钮时调用该函数。该函数获取textarea的值并检查其中的所有字符。然后检查两个字符的出现次数是否相同。在函数中,我需要使用if-else语句 例如: 如果输入有3x[和3x]:如果(a.length==b.length){}(=true) 如果输入有3个[和2个]:如果(a.length==b.length){}(=false) 但我不太确定如何计算单个字

关于文本区域中的字数,还提出了其他问题,但这些问题与本问题不相同:

我试图做的是编写一个JavaScript/jQuery函数,在用户单击按钮时调用该函数。该函数获取textarea的值并检查其中的所有字符。然后检查两个字符的出现次数是否相同。在函数中,我需要使用if-else语句

例如: 如果输入有3x
[
和3x
]
如果(a.length==b.length){}
=true

如果输入有3个
[
和2个
]
如果(a.length==b.length){}
=false

但我不太确定如何计算单个字符。我用一些正则表达式和一个
匹配来猜测,但以下似乎不起作用:

var a=str.match(/\[+/g),
b=str.match(/\[+/g);
如果(a.length==b.length){
//做点什么
}

这是一个。如你所见,计数不正确。

这对你有用吗

var aOccurrences = str.split("a").length - 1,
    bOccurrences = str.split("b").length - 1;

if(aOccurrences === bOccurrences) {
   //doSomething
}

我的答案只是部分,因为我不知道如何在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;
这是结构的一个想法。希望能有所帮助。

怎么样:

'a[b][ca[]de'.match(/\[/g).length;
输出:

3
正如所料

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

制作一个索引为“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

希望这会有所帮助。

请检查您的regexp语法,
a+/g
没有达到您的预期效果。您无法使用常规语法计算出现次数,您需要另一种方法。尝试类似于/a/gEverything的方法,在regexp计数中,如果要计数
[
,请在
+
之后删除空格后面没有空格。
+
匹配前面的字符一次或多次,它会将顺序匹配连接到一个字符。只需删除
+
。请参阅如何创建。很抱歉,我真的不能用这个答案做任何事情。Java对我没有任何帮助。我可以问一下,为什么您认为发布这些内容是合理的吗a(可能的)用错误的语言解决问题?你认为这有什么帮助?我不会说Java,所以我同样无法用它来解决发布的问题。我在Java、C#和其他语言中有一些关于正则表达式的经验。因为语法不同,但函数总是一样的,我也是假设它可以帮助构建一个架构,然后用一个好的名称和语法替换错误的名称和语法。看来我错了!
if(arr['C1'-'a']==arr['C2'-'a'])