爪哇新手来了。
说给我一根绳子:
===This銳是a= stri = ng身===
我如何使用模式匹配来有效地计算在“a= is銳stri = ng身”的边缘有多少"=“符号?
此外,我还试图使用Java转义序列(如\G ),但显然它们不编译。
发布于 2013-02-15 05:22:34
我个人可能不会用正则表达式来做这个,但是.这就是起作用的地方:
Matcher m = Pattern.compile("^(=+).+[^=](=+)$").matcher("===Som=e=Text====");
m.find();
int count = m.group(1).length() + m.group(2).length();
System.out.println(count);(注意,这不是在进行错误检查,而是假设两端都有= )
编辑添加:,这里有一个可以工作,不管两端是否有=:
public static int equalsCount(String source)
{
int count = 0;
Matcher m = Pattern.compile("^(=+)?.+[^=](=+)?$").matcher(source);
if (m.find())
{
count += m.group(1) == null ? 0 : m.group(1).length();
count += m.group(2) == null ? 0 : m.group(2).length();
}
return count;
}
public static void main(String[] args)
{
System.out.println(equalsCount("===Some=tex=t="));
System.out.println(equalsCount("===Some=tex=t"));
System.out.println(equalsCount("Some=tex=t="));
System.out.println(equalsCount("Some=tex=t"));
}另一方面..。您可以避免正则表达式,然后做:
String myString = "==blah=";
int count = 0;
int i = 0;
while (myString.charAt(i++) == '=')
{
count++;
}
i = myString.length() - 1;
while (myString.charAt(i--) == '=')
{
count++;
}发布于 2013-02-15 05:04:21
如果要计算边缘出现"=“的次数,请尝试以下操作。
int count = str.length() - str.replaceAll("[^=]=[^=]", "").length();发布于 2013-02-15 05:07:13
这可能是一个可能的答案:
public static void main(String[] args) {
int count = 0;
String str = "===This is a= stri = ng===";
Pattern edgeEq = Pattern.compile("=");
Pattern wordEq = Pattern.compile("[^=]=+[^=]");
Matcher edgeMatch = edgeEq.matcher(str);
while (edgeMatch.find()) {
count++;
}
Matcher wordMatch = wordEq.matcher(str);
while (wordMatch.find()) {
count--;
}
System.out.println(count);
}这将帮助您找到字符串边缘上的=数。
https://stackoverflow.com/questions/14888460
复制相似问题