gpt4 book ai didi

Android TextUtils.split 传递定长字符串[]

转载 作者:行者123 更新时间:2023-11-29 00:48:15 26 4
gpt4 key购买 nike

我无法将字符串分成固定长度的 block 并添加到 ArrayList ... 下面的代码按预期进行迭代,但所有 messageToSplit[] 直到最后一个都是空的。最后一个实际上有它的值(value)。

在下面的示例中,如果返回编辑文本,则为“01234567890”,然后是“”、“”和“890”。

Pattern p = Pattern.compile(".{4}");
ArrayList<String> myText = new ArrayList<String>();
String[] messageToSplit = TextUtils.split(myStringEditText.getText().toString(), p);
int x = 0;
while(x <= (myStringEditText.getText().toString().length() / 4)) {
Toast.makeText(getBaseContext(), x+": '" + messageToSplit[x] + "'", Toast.LENGTH_SHORT).show();
myText.add(messageToSplit[x]);
x++;
}

最佳答案

split 操作中,正则表达式模式是分隔符。例如,如果正则表达式模式为 ;,则 12;34;56 将拆分为 123456

因此在您的情况下,01234567890 被拆分为 ""(0123 之前的字符串)、"" (01234567 之间的字符串)和 890(4567 之后字符串的剩余部分)。

你可能不想使用 split 而是像这样:

Pattern p = Pattern.compile(".{1,4}");
Matcher regexMatcher = p.matcher(messageToSplit);
while (regexMatcher.find()) {
myText.add(regexMatcher.group());
}

.{1,4} 如果可以,将匹配 4 个字符,但如果四个字符不再可用,则用 1-3 凑合(如果它的长度可能发生在字符串的末尾不是 4 的倍数)。

关于Android TextUtils.split 传递定长字符串[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com