2013-08-01 4 views
1

Я хочу разбить строку после каждого двух символов.Разделить строку после каждого двух символов

Для примера:

String aString= "abcdef" 

Я хочу, чтобы после раскола "ab cd ef"

Как я могу это сделать?

Спасибо :)

+3

Ну, что вы пробовали, и что произошло? Вы посмотрели методы, доступные в 'String', чтобы найти метод, который позволяет извлекать часть строки на основе индексов? –

+0

Подстрока может помочь вам ^^ – Deckard27

+1

Посмотрите на [Разделить строку на несколько строк символов] (http://stackoverflow.com/questions/4788596/split-string-into-several-two-character-strings) – jpw

ответ

3

Это отрицательный looakahead на основе регулярных выражений должны работать для вас:

String repl = "abcdef".replaceAll("..(?!$)", "$0 "); 

PS: Это позволит избежать добавления пробела после последнего матча, так что вы получите этот результат:

"ab cd ef" 

вместо:

"ab cd ef " 
+0

Большое спасибо! ваш ответ - самый легкий ответ: D – lisa

+0

Вы очень желанны, рад, что это сработало. – anubhava

5

Если вы хотите, чтобы вывод, что та же строка с дополнительными пробелами, вы можете просто использовать:

String newString = aString.replaceAll("(..)", "$1 ") 
0

вы можете сделать это легко, как здесь:

String k = "sdfjsdf"; 
    String s = ""; 
    for (int i=0;i<k.length();i++){ 
     s+=k.charAt(i); 
     if (i%2 != 0){ 
      s+=" "; 
     } 
    } 
0
String s = "teststr"; 
StringBuilder tmp = new StringBuilder(); 

for (int i = 0; i < s.length(); i++) { 
    tmp.append(s.charAt(i)); 
    if (i % 2 == 1) tmp.append(" "); 
} 

System.out.println(tmp.toString()); 
4

Использование регулярных выражений:

 String str= "abcdef"; 

     String[] array=str.split("(?<=\\G.{2})"); 

     System.out.println(java.util.Arrays.toString(array));  

Выход:

[ab, cd, ef]

+0

Это Это! Но я предлагаю 'System.out.println (java.util.Arrays.toString (array)); 'вместо' for'. Кроме того, введите результат в ответ, чтобы люди увидели его эффекты. – acdcjunior

+0

@acdcjunior: Спасибо за предложение. –

0

Попробуйте это:

StringBuilder sb= new StringBuilder(); 
for (int i=0; i<s.length()-2;i+=2){ 
    sb.append(s.substring(i, i+2)); 
if (i!=s.length()-3){ 
    sb.append(" "); 
    } 
} 
0
public static void main(String[] args) { 

    String st = "abcdefg"; 
    ArrayList<String> array = new ArrayList<String>(); 

    int i = 0; 
    while(i<st.length()) 
    { 
     int j=i+2; 
     if(j>st.length()) 
      j=st.length(); 
     array.add(st.substring(i,j)); 
     i=j; 
    } 

    System.out.println(array); 

} 
0
String aString= "abcdef";  
int partitionSize=2; 
for (int i=0; i<aString.length(); i+=partitionSize) 
{ 
    System.out.println(aString.substring(i, Math.min(aString.length(), i + partitionSize))); 
} 
+0

Этот ответ принес бы небольшой комментарий о том, что происходит, и почему вы сделали это таким образом. –

1

попробовать этот

String[] a = "abcdef".split("(?<=\\G..)"); 
    System.out.println(Arrays.asList(a)); 

выход

[ab, cd, ef] 
+0

https://i.gyazo.com/f7d4f4c542139aee36e0aab03e145fa5.png Что не так? –

0

Попробуйте это тоже

String aString= "abcdef"; 
    String[] arr=aString.split("(?<=\\G.{2})"); 
Смежные вопросы