Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList<String> s = new ArrayList();
for (int i = 0; i <= n; i++)
{
String st = sc.nextLine();
s.add(st);
}
int q = sc.nextInt();
for (int i = 0; i<q;i++)
{
int count = 0;
String st = sc.nextLine();
String check = "\\w"+st+"\\w";
Pattern p = Pattern.compile(check);
for (int j = 0; j < n; j++)
{
Matcher m = p.matcher(s.get(j));
while (m.find())
{
count += 1;
}
}
System.out.println(count);
}
有人能帮我弄清楚为什么上面的代码给出了错误的答案吗?
这里要提两件事:
nextint()
的调用不使用换行符,您必须显式调用nextline()
或抓取整行并转换为int(此处对此进行解释)ISIS
中的两个is
),您需要将\\\w
替换为\\b
(非单词边界)。请参见一个固定的代码片段:
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine(); // Force it to consume the line break
ArrayList<String> s = new ArrayList();
for (int i = 0; i < n; i++)
{
String st = sc.nextLine();
s.add(st);
}
int q = sc.nextInt();
sc.nextLine(); // Force it to consume the line break
for (int i = 0; i < q; i++)
{
int count = 0;
String st = sc.nextLine();
String check = "\\B" + st + "\\B";
Pattern p = Pattern.compile(check);
for (int j = 0; j < n; j++)
{
Matcher m = p.matcher(s.get(j));
while (m.find())
{
count += 1;
}
}
System.out.println(count); // => 3
}
问题内容: 有没有一种简单的方法来测试Python字符串“ xxxxABCDyyyy”,以查看其中是否包含“ ABCD”? 问题答案: if “ABCD” in “xxxxABCDyyyy”: # whatever
问题内容: 我曾经在JavaScript中这样做: Swift没有此功能,如何做类似的事情? 问题答案: 编辑/更新: Xcode 11•Swift 5.1或更高版本 用法: 不区分大小写的样本 正则表达式样本
问题内容: 为什么以下算法对我来说不停止?(str是我要搜索的字符串,findStr是我要寻找的字符串) 问题答案: 最后一行造成了问题。永远不会为-1,所以会有无限循环。可以通过将代码的最后一行移到if块中来解决此问题。
本文向大家介绍替换Java字符串中的子字符串,包括了替换Java字符串中的子字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 我们想将子字符串“ Dead”替换为“ Alive”。为此,让我们使用以下逻辑。在这里,我们使用了while循环,并在其中找到了要替换的子字符串的索引。这样,我们一个接一个地替换了整个子字符串。 以下是替换子字符串的完整示例。 示例 输出结果
例如,我们有一个字符串:asd/asd/asd/1#s_ 我需要匹配以下部分:/asd/1#s_或asd/1#s_如何使用普通正则表达式? 我试过像这样的消极前瞻,但它不起作用 它匹配这个“前缀/asd/1#s_”,我需要匹配“/asd/1#s_”中的这个“/asd/1#”,我需要匹配“/asd/1#s_”,而没有所有前面的 /asd/'s 匹配应该与普通正则表达式没有任何编程语言的任何帮助函数h
问题内容: 我想替换列中的子字符串 到。 需求输出 我尝试,但它返回。 问题答案: 使用与更换和: