当前位置:编程学习 > JAVA >>

怎么判断字符串中有类似下面的子字符串?

字符串格式如下:

"'二级销售部','销售部','业务部','管理部','仓储部'"



我用str_workgroup.indexOf('销售部')判断字符串中是否包含'销售部',但是如果str_workgroup="'二级销售部','业务部','管理部','仓储部'"。

虽然str_workgroup不包换'销售部',但是'二级销售部'里包含《销售部》这3个字。str_workgroup.indexOf('销售部')的结果就会是1,但是实际结果应该是0(也就是不包含)

这怎么办呢? --------------------编程问答-------------------- 这个可以考虑判断先后顺序调整下:优先判断字符串长的关键字。 --------------------编程问答-------------------- 我竟然没看明白,,, --------------------编程问答--------------------
引用
'二级销售部','销售部','业务部','管理部','仓储部'
既然你的字符串是这种格式的那就很方便了。直接匹配'销售部',注意有2个'引号。 --------------------编程问答-------------------- startsWith 结合 字符串长度等就可以了啊。 --------------------编程问答--------------------
引用 2 楼 oXiMeng 的回复:
我竟然没看明白,,,

+10086 --------------------编程问答--------------------

String matchStr = "'销售部'";
String allStr = "'二级销售部','销售部','业务部','管理部','仓储部'";
String[] list = allStr.split(",");
        for (String s: list) {
         if (s.equalsIgnoreCase(matchStr)) {
         System.out.println("存在!");
         break;
         }
        }
        
        String regex = "'销售部'";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(allStr);
        if (m.find()) {
         System.out.println("存在!");
        }
--------------------编程问答-------------------- 引号一起匹配 --------------------编程问答-------------------- 很难么? --------------------编程问答-------------------- str_workgroup.indexOf("'销售部'")这样 --------------------编程问答-------------------- 两种方法楼上都写了。
第一优先匹配条件苛刻的。
第二连引号一起匹配了。
感觉第一种更好些~万一没引号了呢。 --------------------编程问答-------------------- 6楼用正则表达式的ok,大家都好好学学正则吧 --------------------编程问答--------------------
	public static void main(String[] args) {
String s = "'二级销售部','销售部','业务部','管理部','仓储部'";
Matcher m = Pattern.compile("(?<=')销售部(?=')").matcher(s);
while(m.find()){
System.out.println("存在");
return;
}
System.out.println("不存在");
}
--------------------编程问答-------------------- 1:split之后,遍历数组去equals.
2:存在Collection里面 --------------------编程问答--------------------
引用 12 楼 fudongrifdr 的回复:
	public static void main(String[] args) {
String s = "'二级销售部','销售部','业务部','管理部','仓储部'";
Matcher m = Pattern.compile("(?<=')销售部(?=')").matcher(s);
while(m.find()){
System.out.println("存在");
return;
}
System.out.println("不存在");
}

while写成If就行了 --------------------编程问答--------------------
引用 13 楼 momoaiyanzi 的回复:
1:split之后,遍历数组去equals.
2:存在Collection里面


+1024 --------------------编程问答--------------------
引用 15 楼 u012463264 的回复:
Quote: 引用 13 楼 momoaiyanzi 的回复:

1:split之后,遍历数组去equals.
2:存在Collection里面


+1024


不用遍历 ,集合类有相应的方法就能判断,集合中是否有这个元素。
contains()判断list ,vector 中是否包含该元素 --------------------编程问答-------------------- 你好蛋疼 楼上有答案了 思路最重要  --------------------编程问答-------------------- 正则可以。。。 --------------------编程问答-------------------- 上面的哥们的方法可以的,但是我感觉你既然有这种需求为什么不用list或是数组呢?为什么选择字符串拼接。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,