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;
}