如何在不知道确切子字符串的情况下搜索 SpannableString

How to search a SpannableString without knowing the exact substring

我想搜索一个 spannable 字符串以找到某个子字符串的索引,我不知道该子字符串的长度或确切字符,例如 [size=??] 其中问号可以是任何字符或任何子字符串长度。如果可能的话我也想知道找到这样一个字符串的长度。

(edit) 示例: 如果给出了 "string [size=212] more string" 之类的字符串,我希望它成为 return 索引,所以在这种情况下 7[size=212] 的长度,在这种情况下 10

您需要使用正则表达式来提取子字符串。 得到它后,使用函数 indexOf 搜索匹配,这将为您提供子字符串出现的第一个索引。

注意:请详细说明您的问题

您可以使用 PatternMatcher.

来完成这项工作
public class Main
{
    public static void main(String[] args)
    {
        String str = "string [size=212] more string [size=212] more string here";
        Pattern pat = Pattern.compile("\[size=[0-9]+\]");
        Matcher mat = pat.matcher(str);

        int index, lastIndex = 0, length, value;

        while(mat.find()) {
            final String found = mat.group(0);
            value = Integer.parseInt(found.replaceAll("^\[size=|\]$", ""));
            length = found.length();
            index = str.indexOf(found, lastIndex);
            lastIndex += length;

            System.out.printf("index: %d, length: %d, string: %s, value: %d%n", index, length, found, value);
        }
    }
}

输出:

index: 7, length: 10, string: [size=212], value: 212
index: 30, length: 10, string: [size=212], value: 212