JAVA 如何查出一个字符串中包含的另一个字符串中的所有字符

qinbaowei 2017-10-17 03:35:07
请教下如何判断aabbcc是否包含abc所有字符,用contains()和indexOf() 方法只能查链接在一起的,除了把字符串拆开用递归一个一个去匹配还有其他好一点的方法吗?
...全文
767 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
attilax 2019-05-20
  • 打赏
  • 举报
回复
Atitit 搜索查出字符串中包含的所有关键词

JAVA 如何查出一个字符串中包含的另一个字符串中的所有字符

原理,使用indexof 一个循环就出来了一个列表,格式如下
{
"txt":"软件理论方面的书籍 Atitit软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。计算机基础理论包含以",
"key":"理论",
"positionStart":18,
"padLen":10,
"keyWithPad":"籍 Atitit软件理论方面的书籍 目录 1"
},


/sumdoclist/src/com/attilax/search/SearchScanUtil.java

package com.attilax.search;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

public class SearchScanUtil {

public static void main(String[] args) {
String t = "软件理论方面的书籍 Atitit软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。计算机基础理论包含以";
String k = "理论";
// String t = "abcdefabc";
// String k = "abc";
List<Map> search = search(t, k,10);
System.out.println(JSON.toJSONString(search,true));

}

public static List<Map> search(String txt, String key,int padLen) {
List<Map> li = Lists.newLinkedList();
int fromIndex = 0;
while (true) {
int position = txt.indexOf(key, fromIndex);
if(position==-1)
return li;
Map m = Maps.newLinkedHashMap();
m.put("txt", txt);
m.put("key", key);
m.put("positionStart", position);
m.put("padLen", padLen);
m.put("keyWithPad", getkeyWithPad(txt,position,padLen,key));
li.add(m);
fromIndex=position+key.length();

}

}
private static Object getkeyWithPad(String txt, int position, int padLen, String key) {
int beginIndex=position-padLen;
if(beginIndex<0)
beginIndex=0;
int endIndex =position+key.length()+padLen;
if(endIndex>txt.length())
endIndex=txt.length();
return txt.substring(beginIndex, endIndex);
}

public static List<Map> search(String txt, String key) {
List<Map> li = Lists.newLinkedList();
int fromIndex = 0;
while (true) {
int position = txt.indexOf(key, fromIndex);
if(position==-1)
return li;
Map m = Maps.newLinkedHashMap();
m.put("txt", txt);
m.put("key", key);
m.put("positionStart", position);
li.add(m);
fromIndex=position+key.length();

}

}

}



[
{
"txt":"软件理论方面的书籍 Atitit软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。计算机基础理论包含以",
"key":"理论",
"positionStart":2,
"padLen":10,
"keyWithPad":"软件理论方面的书籍 Atit"
},
{
"txt":"软件理论方面的书籍 Atitit软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。计算机基础理论包含以",
"key":"理论",
"positionStart":18,
"padLen":10,
"keyWithPad":"籍 Atitit软件理论方面的书籍 目录 1"
},
{
"txt":"软件理论方面的书籍 Atitit软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。计算机基础理论包含以",
"key":"理论",
"positionStart":42,
"padLen":10,
"keyWithPad":"计算机科学分为计算机理论和计算机应用。计算机"
},
{
"txt":"软件理论方面的书籍 Atitit软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。计算机基础理论包含以",
"key":"理论",
"positionStart":56,
"padLen":10,
"keyWithPad":"算机应用。计算机基础理论包含以"
}
]
qq_39912309 2017-10-19
  • 打赏
  • 举报
回复
搜索的话可以用solr
6点A君 2017-10-19
  • 打赏
  • 举报
回复
如果是想实现一个类似于搜索的功能,就不要把思维定在java,去看看数据库全文检索,或者利用redis来实现
qq_39696541 2017-10-18
  • 打赏
  • 举报
回复
有点全文检索的意思
一个帅逼 2017-10-17
  • 打赏
  • 举报
回复
	/**
	 * @author zsj
	 * @param f  父字符串
	 * @param s  子字符串
	 * @return
	 */
	public boolean strTest(String f,String s){
		int n=0,m=0,total=0;
		boolean flag=false;
		while(n<f.length()&&m<s.length()){
			if(f.charAt(n)==s.charAt(m)){
				n=0;
				m++;
				total++;
			}else{
				n++;
			}
			if(total==s.length()){
				flag=true;
				break;
			}
		}
		return flag;
	}
随手写了个,不知道满不满足你的需求,主要是我不知道你的具体需求,比如:“abbcc”,“aabc”是能匹配还是不能呢,你可以看着改
繁华终归落尽 2017-10-17
  • 打赏
  • 举报
回复
去重,排序,contains()?
qinbaowei 2017-10-17
  • 打赏
  • 举报
回复
实际上不是abc,只是举个例子,类似于搜索,比如有一个标题"电影预告片:英伦对决",搜索"英伦对决预告片"的时候也会匹配到
内容概要:本报告系统研究了开源AI代理生态系统OpenClaw的发展现状、技术架构与社会影响,阐述其从个人实验项目演进为具备“数字员工”能力的自治系统过程。OpenClaw以本地优先、隐私至上为核心理念,构建了集持久化记忆、多模态交互、主动执行与自我进化于一体的AI代理框架,实现从“对话助手”到“自主行动者”的范式跃迁。报告深入剖析其四层架构(大脑、交互、记忆、执行)、技能经济模型及安全风控机制,并对比国内LobsterAI、Kimi Claw、MiniMax等类似平台的差异化路径。通过真实案例揭示其在一人公司、内容创作、跨境电商等场景下的高毛利变现潜力,提出“正向Token流”驱动的可持续经济模型。最后展望未来人机共生与隔离两种演进路径,预测2030年将形成具备经济主权的硅基代理社会。; 适合人群:关注AI代理、自动化工具、人机协同的科研人员、技术研发者、创业者及企业数字化管理者;具备一定技术理解力并对AI生产力变革感兴趣的个人或团队。; 使用场景及目标:①理解OpenClaw如何重塑个人与组织的生产力范式;②掌握AI代理系统的架构设计、安全治理与商业化路径;③探索一人公司如何借助Agent实现低成本规模化运营;④预判未来AI从“消耗”走向“增殖”的技术与经济社会演变趋势。; 阅读建议:此报告融合技术、经济与社会视角,建议结合实际应用场景进行批判性阅读,重点关注其提出的“自我进化”“技能原子”“数字免疫系统”等创新概念,并警惕其关于安全与伦理的风险警示,在实践平衡创新与可控性。
已经博主授权,源码转载自 https://pan.quark.cn/s/46fec8a692f3 在Halcon机器视觉系统,对图像及区域特征进行操作是一项基本功能。本文重点阐述如何从Image图像内的Region区域提取各类特征参数,这对于图像解析、识别与分类具有核心意义。以下列举部分关键函数及其具体用途的详细说明:1. **area_center_gray**: 此函数旨在计算Region区域的面积(Area)与质心坐标(Row, Column)。面积定义为区域内像素数量的总和,而质心则是区域内像素位置的平均位置,这些信息有助于明确区域的大小与位置特征。2. **cooc_feature_image**: 该函数通过构建共生矩阵并提取灰度特征值,包括Energy(能量)、Correlation(相关性)、Homogeneity(均一性)和Contrast(对比度)。这些特征值能够反映图像像素灰度值的分布状态,对于纹理分析具有显著价值。3. **cooc_feature_matrix**: 此函数基于共生矩阵计算出前述的灰度特征值,可应用于更深入的纹理分析工作。4. **elliptic_axis_gray**: 该函数用于测定Region的主轴长度(Ra, Rb)和旋转角度(Phi),这对于图像椭圆形或圆形物体的识别与测量极为关键。5. **entropy_gray**: 此函数旨在计算区域的熵(Entropy)和各向异性(Anisotropy)。熵作为衡量区域灰度分布不确定性的指标,而各向异性则表征区域灰度分布的对称程度。6. **estimate_noise**: 通过该函数可从单一图像评估噪声水平(Sigma),提供foerstner、immerkaer...

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧