java判断字符串是否包含一个字符或者多个不连续字符

在做拼音搜索的时候,发现了一个问题,现有的contains或者indexOfAt都是判断是否包含连续的字符串,但我的需求是包含不连续的字符串,所以我做了一下的一个接军方法,希望能帮助到大家。
代码如下
其中p例如abcdef name例如adf

 //查看是否包含所查询的字符串
					 boolean res=false;
					 //如过只有一个字符
					 if(name.length()<2){
						 //包含
						 res=p.contains(name);
					 }else{
						 
						 //当不是一个字符的时候,循环获取每个字符
						 for(int j=0;j<name.length();j++){
							char a=name.charAt(j);
							int res1=p.indexOf(a);
						
							
							//判断是否包含
							if(res1==-1){
								//不包含
								res=false;
								//跳出此次循环
								break;
							}else{
								//包含的话
								//解决重复搜索问题,当搜索完第一个字符后,
								//根据此字符切割,只要此字符以后的字符,
								//下一次遍历则在新的字符串遍历
								String b=a+"";
								//根据字符切割问两个字符串
								String[] p1=p.split(b, 2);
							/*	System.out.println("长度:"+p1.length);
								System.out.println(p1[0]);
								System.out.println(p1[1]);*/
								//把p从新赋值,形成新的字符串
								p=p1[1];
								res=true;
							}
							System.out.println(res);
						 }
						 
					 }

希望能帮的到大家,如果有不懂的,联系我,欢迎一起讨论

判断字符串是否包含表情等特殊符号,可以使用Unicode的范围来检查字符是否在表情符号的范围内。下面是一个示例的Java函数: ```java public class Main { public static void main(String[] args) { String str1 = "Hello, World! 😊"; String str2 = "Hello World"; System.out.println(containsSpecialSymbols(str1)); // true System.out.println(containsSpecialSymbols(str2)); // false } public static boolean containsSpecialSymbols(String str) { for (int i = 0; i < str.length(); i++) { int codepoint = str.codePointAt(i); // 判断字符是否在表情符号的范围内 if ((codepoint >= 0x1F600 && codepoint <= 0x1F64F) || (codepoint >= 0x1F300 && codepoint <= 0x1F5FF) || (codepoint >= 0x1F680 && codepoint <= 0x1F6FF) || (codepoint >= 0x2600 && codepoint <= 0x26FF) || (codepoint >= 0x2700 && codepoint <= 0x27BF) || (codepoint >= 0xFE00 && codepoint <= 0xFE0F) || (codepoint >= 0x1F900 && codepoint <= 0x1F9FF)) { return true; } } return false; } } ``` 在上面的示例中,`containsSpecialSymbols`函数接收一个字符串作为参数,并遍历字符串的每个字符。对于每个字符,使用`codePointAt`方法获取其Unicode码点。然后,通过比较码点的范围,判断字符是否在表情符号的范围内。如果找到符合条件的字符,则返回`true`,否则返回`false`。 请注意,上面的示例仅包含了一些常见的表情符号的范围,如果你需要包含更多的特殊符号范围,请根据需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值