Вы можете использовать
for i in $(seq $END); do echo $i; done
Для большого улучшения производительности, альтернативой может быть использование substring()
в цикле:
public String[] splitStringEvery(String s, int interval) {
int arrayLength = (int) Math.ceil(((s.length() / (double)interval)));
String[] result = new String[arrayLength];
int j = 0;
int lastIndex = result.length - 1;
for (int i = 0; i < lastIndex; i++) {
result[i] = s.substring(j, j + interval);
j += interval;
} //Add the last bit
result[lastIndex] = s.substring(j);
return result;
}
Пример:
Input: String st = "1231241251341351452342352456"
Output: 123 124 125 134 135 145 234 235 245 6.
Это не так коротко, как решение Stevevls , но это намного эффективнее (см. ниже), и я думаю, что в будущем это будет легче отрегулировать, конечно, в зависимости от вашей ситуации.
2000 символов длинная строка - интервал составляет 3 .
split("(?<=\\G.{" + count + "})")
производительность (в миллисекундах):
7, 7, 5, 5, 4, 3, 3, 2, 2, 2
splitStringEvery()
(substring()
) производительность (в миллисекундах):
2, 0, 0, 0, 0, 1, 0, 1, 0, 0
<час> 2 000 000 символов длинная строка - интервал составляет 3 .
split()
производительность (в миллисекундах):
207, 95, 376, 87, 97, 83, 83, 82, 81, 83
splitStringEvery()
производительность (в миллисекундах):
44, 20, 13, 24, 13, 26, 12, 38, 12, 13
<час> 2 000 000 символов длинная строка - интервал составляет 30 .
split()
производительность (в миллисекундах):
103, 61, 41, 55, 43, 44, 49, 47, 47, 45
splitStringEvery()
производительность (в миллисекундах):
7, 7, 2, 5, 1, 3, 4, 4, 2, 1
<час> Вывод:
Метод splitStringEvery()
намного быстрее (даже после изменений в Java 7u6 ), и он обостряется, когда интервалы становятся выше ].
Готовый к использованию тестовый код:
Используя Google Guava , вы можете использовать Splitter.fixedLength ()
Возвращает разделитель, который делит строки на куски заданной длины
Splitter.fixedLength(2).split("abcde");
// returns an iterable containing ["ab", "cd", "e"].
Если вы хотите построить эту строку регулярных выражений, вы можете установить длину разделения в качестве параметра.
public String getRegex(int splitLength)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < splitLength; i++)
builder.append(".");
return "(?<=\\G" + builder.toString() +")";
}
Вы можете использовать оператор фигурной скобки, чтобы указать, сколько раз символ должен появляться:
String []thisCombo2 = thisCombo.split("(?<=\\G.{" + count + "})");
фигурная скобка - это удобный инструмент, поскольку вы можете использовать ее для указания точного количества или диапазонов.
private String[] StringSpliter(String OriginalString) {
String newString = "";
for (String s: OriginalString.split("(?<=\\G.{"nth position"})")) {
if(s.length()<3)
newString += s +"/";
else
newString += StringSpliter(s) ;
}
return newString.split("/");
}