java获取字符串的偏移量
我有一个Array
的Strings
,它是从缓冲区字符串中分离出来的。现在数组中的每个项都有一个{value, offset, count, & hash}
。如何获取数组中项目的偏移量
例如:
String buffer = aVeryLongString;
String[] splitStringArray = buffer.split(regex);
for(String s: splitStringArray) {
// Get the offset of each item
// Do something
}
# 1 楼答案
如果正则表达式始终匹配固定长度,那么偏移量将是前面字符串的长度加上拆分字符串的长度之和
但是如果正则表达式长度不固定。。。嗯,这不是一个容易的问题。我认为,你必须基本上重复split用来找到碎片的逻辑
# 2 楼答案
使用^{} 可以找出字符串的偏移量。它开始搜索给定偏移量处的字符串。因此,使用前一个字符串的偏移量将解决重复的问题
# 3 楼答案
您可能希望使用正则表达式匹配器/模式类而不是字符串。分割功能。使用Matcher类,您可以使用find()迭代匹配,并通过end()获取当前位置
# 4 楼答案
比如说,您想用空格字符分割一个
buffer
。(\S+
代表非空白字符)# 5 楼答案
绳子。indexOf(字符串str)应该可以工作
# 6 楼答案
绳子。split()实际上并没有提供恢复此信息的方法(无需在数组中循环并添加以前的长度)。如果需要关于生成的子字符串的额外信息,可以尝试java.util.Scanner
或者,正如其他海报所建议的,使用java。util。正则表达式类、模式和匹配器