java - 在 Java 中有效地拆分大字符串
问题描述
我有一个大字符串,如果它前面没有另一个特定字符,应该在某个字符处拆分。
这样做是最有效的方法吗?
示例:在 ':' 处拆分此字符串,但不在 "?:" 处拆分:
part1:part2:https?:example.com:anotherstring
到目前为止我已经尝试过:
正则表达式
(?<!\?):
。非常慢。首先获取拆分字符串的索引,然后拆分它。仅当字符串中的拆分字符不多时才有效。
逐个字符迭代字符串。如果没有很多保护字符(例如“?”),则有效。
解决方案
我担心您必须检查字符串并检查“:”前面是否有“?”
int lastIndex=0;
for(int index=string.indexOf(":"); index >= 0; index=string.indexOf(":", lastIndex)){
if(index == 0 || string.charAt(index-1) != '?'){
String splitString = string.subString(lastIndex, index);
// add splitString to list or array
lastIndex = index+1;
}
}
// add string.subString(lastIndex) to list or array
推荐阅读
- linux - 图像在 opencv 捕获中呈绿色
- excel - 作为参数传递的函数以获取其值
- python - Python Behave - 如何从场景中传递值以在功能级别的夹具中使用?
- python - 尝试用python做一个基本的网上商店代码
- c++ - 父进程和子进程之间的 POSIX 信号量
- javascript - 单击其他按钮时如何删除标签的类
- kubernetes - 使用来自 kubernetes java 客户端的名称启动部署或服务
- javascript - Openlayers V6 背景填充文本仅适用于最后一个文本元素
- c# - pdfDocument.Save 是否保留 PDF 文件格式?
- javascript - 没有反弹css时,Javascript的scrollTo()不起作用?