【发布时间】:2016-06-03 04:28:24
【问题描述】:
我想查找 (a) 特定字符的出现,但此要搜索的字符串不能在引号之间:
例子:
"this is \"my\" example string"
如果您查找 char 'm',那么它应该只从“example”返回 'm' 的索引,因为另一个 ' 在双引号之间。
另一个例子:
"th\"i\"s \"is\" \"my\" example string"
我期待这样的事情:
public List<Integer> getOccurrenceStartIndexesThatAreNotBetweenQuotes(String snippet,String stringToFind);
一种“天真的”方式是:
获取sn-p中stringToFind的所有起始索引
获取sn-p中所有引号的索引
取决于stringToFind的起始索引,因为你有引号的位置,你可以知道你是否在引号之间。
有没有更好的方法来做到这一点?
编辑:
我要检索什么?匹配的索引。
几件事:
在字符串中可以有很多引用的内容来搜索:"th\"i\"s \"is\" \"my\" example string"
在字符串中:"th\"i\"s \"is\" \"my\" 示例字符串"、"i"、"is" 和 "my" 在引号之间。
不限于字母和数字,我们可以有';:()_-=+[]{}等...
【问题讨论】:
-
如何删除引号中的所有内容以及引号字符,然后搜索是否只想查找出现的内容?
-
一个蛮力选项是查找所有引号对的索引,
m的所有索引,然后排除那些会落在引号内的索引。 -
@TimBiegeleisen 这就是我在上一段中试图解释的内容。
-
目前尚不清楚您打算如何处理符合条件的子字符串,但要考虑的其他选项是
java.util.regex包或java.io.StreamTokenizer类。如果你愿意添加一个开源库,你也有org.apache.commons.lang3.text。 -
我只想找到不在双引号之间的字符串出现的索引。