跳到主要内容

6. 字符串

以例导入

信息

题目:给一句话(字符串 A),给一个单词(子串 B),求 B 在 A 中出现次数

StringTokenizer 类

StringTokenizer(String str, String delim) :构造一个用来解析 str 的 StringTokenizer 对象,并提供一个指定的分隔符。

//像这样
StringTokenizer st = new StringTokenizer(s, "[ ,.:;|!?`~<>()+]+");

while(st.hasMoreElements())
{
if(st.nextToken().equals(substring))
num++;
}
提示

[]里面表示分隔符们,外面的 + 表示前面的这些分隔符们连续出现时只算做一个串

String 类

方法一:split()
String[] word = s.split("[\\s+.?,;:`~!|()<>]+");
for(int i=0; i<word.length; i++)
{
if(word[i].equals(substring))
num++;
}
注意

split() 方法的参数是正则表达式,所以要用 \\ 转义

其中:
\s 是转义的空格(同理于公式中的\*显示为 *),而\\s才是正则表达式的空格

方法二:使用contains判断子串存在后用replacefirst逐个排除
while(!s.isEmpty())
{
if(s.contains(substring)) //有就+1然后删掉,再找下一个
{
num++;
s = s.replaceFirst(substring, " ");
}
else
break;
}
方法三:使用indexOf检测子串出现位置后更新index以开始下一次检测:
while(s.indexOf(substring, index) > -1)
{
num++;
index += s.indexOf(substring, index) + 1;
}