给出清单:
private void setGridViewItemClickListener(){
gridView.setOnItemClickListener((parent, view, position, id) -> {
Bundle bundle = new Bundle();
bundle.putInt("position", position);
bundle.putStringArrayList("imageURLs", listImageURLs);
Intent intent = new Intent(this, ImageActivity.class);
intent.putExtras(bundle);
startActivity(intent);
});
}
注意:我每次都会收到一个动态列表,每次都会在列表元素中出现不同的分隔符。
预期清单:
['1~A A1', '2~ B B1', '3~C C1', '4~D D1'] # Delimiter is not fixed
尝试使用以下代码,该代码适用于字符串类型。
['1;A A1','2;B B1','3;C C1','4;D D1']
答案 0 :(得分:1)
使用Regex。
<强>演示:强>
import re
l = ['1~A A1', '2~ B B1', '3~C C1', '4~D D1']
for i, value in enumerate(l):
l[i] = re.sub(r"[^A-Za-z0-9\s]", ";", value)
print(l)
<强>输出:强>
['1;A A1', '2; B B1', '3;C C1', '4;D D1']
答案 1 :(得分:1)
如果您知道可能的分隔符集合为^ ; | ,
和~
(来自评论),请使用re.sub
中的分隔符并将所有分隔符替换为;
。
>>> import re
>>> l = ['1~A A1', '2~ B B1', '3~C C1', '4~D D1']
>>> [re.sub(r"[;,|^~]", ";", s) for s in l]
['1;A A1', '2; B B1', '3;C C1', '4;D D1']
请注意,其中一些在正则表达式中具有特殊含义,例如如果您将^
放在开头,[...]
将被反转。如果有疑问,你可以将它们作为\^
等进行转义,但按此顺序也应该没问题。
答案 2 :(得分:0)
如果分隔符的位置是固定的,那么最差的解决方案可能是最好的:
>>> l = ['1~A A1', '2~ B B1', '3~C C1', '4~D D1']
>>> for index, value in enumerate(l):
l[index] = l[index][0]+';' +l[index][2:]
另外,@ Rakesh的上述解决方案已经足够了