我想将一个字符串拆分为N个2char字符串。我知道我必须使用String.subSequence。但是我希望它继续创建这些,直到字符串为> 2
答案 0 :(得分:3)
试试这个:
int n = 3;
String s = "abcdefghijkl";
System.out.println(Arrays.toString( s.split("(?<=\\G.{2})(?=.)", n + 1 ) ) );
//prints: [ab, cd, ef, ghijkl], i.e. you have 3 2-char groups and the rest
正则表达式的工作原理如下:从最后一个匹配位置((?<=...)
)开始,在至少一个字符(零之前)找到2个字符后面的任何位置(\G
后面的零宽度正面外观) -width positive look ahead (?=.)
)。这不应该匹配字符串开头和结尾的位置,因此n可以根据需要大小,而不会在开头或结尾处产生空字符串。
编辑:如果你想尽可能地分割,只需省去第二个要分割的参数。
示例:
String digits = "123456789";
System.out.println(Arrays.toString( digits.split("(?<=\\G.{2})(?=.)" ) ) ); //no second parameter
//prints: [12, 34, 56, 78, 9]
答案 1 :(得分:1)
String s = "asdasdasd";
List<String> segments = new ArrayList<String>();
for (int i = 1; i < s.length(); i=i+2) {
segments.add(s.substring(i-1, i+1));
}
System.out.println(segments.toString());