我有一个字符串replacedtext
,它是:
Replaced text:OPTIONS (ERRORS=5000)
LOAD DATA
INFILE *
APPEND INTO TABLE REPO.test
Fields terminated by "," optionally enclosed BY '"'
trailing nullcols
(
CODE ,
user,
date DATE "MM/DD/YYYY"
)
我想数一数回购的数量。在这整条线上。所以,我试着用这种方法,但它不起作用。
String[] words = replacedtext.split("\\s+");
int count=0;
for(String w:words){
if(w.equals("\\bREPO.\\b")){
count++;
}
}
System.out.println ("count is :"+count);
输出为:
count is :0
因为在字符串REPO.
中只看到一次。我的输出需要是计数是: 1
。
这里可能有两个问题。。
是一个特殊的符号,它只代表一个字符。所以你的REPO. test不匹配。
第二个问题是equals
方法。您应该使用matcher
或只按正则表达式过滤,然后计数。
我会这样做:
int count = Pattern.compile("\\s").splitAsStream(replacedtext)
.filter(Pattern.compile("\\bREPO\\b").asPredicate())
.count()
System.out.println(count);
w.equals(\\bREPO\\b”)
将w
的内容与\\bREPO进行比较\\b
按字面意思,因此您得到的结果是错误的。
您可以使用正则表达式API计算REPO
的出现次数。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String replacedText = """
Replaced text:OPTIONS (ERRORS=5000)
LOAD DATA
INFILE *
APPEND INTO TABLE REPO.test
Fields terminated by "," optionally enclosed BY '"'
trailing nullcols
(
CODE ,
user,
date DATE "MM/DD/YYYY"
)
""";
Matcher matcher = Pattern.compile("\\bREPO\\b").matcher(replacedText);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println(count);
}
}
输出:
1
请注意,\b
用作单词边界匹配器。
JavaSE 9起,您可以使用匹配器#结果获得一个Stream
,您可以在其中调用Count
,如下所示:
long count = matcher.results().count();
注意:我使用了文本块功能,使文本块看起来更可读。您可以用Pre-Java15的方式形成字符串。
我试图比较两个字符串并识别重复的单词。例如 比较String1和String2将返回单词;“名字”。 我知道有可能将这两个字符串拆分成一个单词数组,然后在二维数组中迭代每个字符串的每个单词。然而,在O(n^2)时,这在计算上是昂贵的,我想知道是否有更快的方法? 谢谢。 编辑:为了清晰起见更改了示例。
我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,
问题内容: 我有一个程序正在制作,当用户输入一种心情时,它将在此基础上输出报价。我需要告诉程序 问题是,我不知道如何使程序识别输入并基于该输出文本…这是到目前为止我所拥有的代码。 问题答案: 首先,看起来您正在处理错误的变量。我想你打算比较。 处理字符串时,请始终使用而不是。比较参考值(通常不可靠),同时比较实际值。 将您的字符串转换为全部大写或全部小写也是一个好习惯。在本示例中,我将使用小写字母
问题内容: 在java中如何比较字符串,使用==还是equals 问题答案: == 测试引用是否相等(它们是否是同一对象)。 .equals() 测试值是否相等(在逻辑上是否为“相等”)。 String.contentEquals() 将的内容String与任何内容进行比较CharSequence(从Java 1.5开始可用)。 因此,如果要测试两个字符串是否具有相同的值,则可能要使用Object
问题内容: 到目前为止,我一直在程序中使用运算符比较所有字符串。但是,我遇到了一个错误,将其中一个更改为错误,并修复了该错误。 是==坏?什么时候应该使用它,不应该使用它?有什么不同? 问题答案: 测试引用是否相等(它们是否是同一对象)。 测试值是否相等(在逻辑上是否为“相等”)。 在调用之前进行检查,因此您不必(在JDK7起可用,在Guava中也可用)。 因此,如果要测试两个字符串是否具有相同的
问题内容: 我正在尝试计算SQL字符串中有多少个单词。 我想显示字数。在给定的示例中,尽管单词之间可能有多个空格,但将为3个单词。 问题答案: 您可以使用与此类似的内容。这将获取字符串的长度,然后减去空格后减去字符串的长度。然后,将数字加到第一应该给你的单词数: 参见带有演示的SQL Fiddle 如果您使用以下数据: 和查询: 结果是: