Разделить строку на 2 одинаковых слова - PullRequest
0 голосов
/ 31 января 2020

У меня есть строка "abcab c", и я хочу разделить ее и напечатать так:

abc

abc

Определение кода для строки:

String word = "abcabc";

Ответы [ 3 ]

6 голосов
/ 31 января 2020

Мы можем попробовать использовать String#replaceAll для опции в одну строку:

String input = "abcabc";
String output = input.replaceAll("^(.*)(?=\\1$).*", "$1\n$1");
System.out.println(output);

Это печатает:

abc
abc

Идея состоит в том, чтобы применить шаблон ко всей строке, которая соответствует и захватывает некоторое количество, за которым затем следует то же количество до конца. Вот шаблон, который объясняется как выполненный для вашего точного ввода abcabc:

(.*)     match 'abc'
(?=\1$)  then lookahead and assert that what follows to the end of the string
         is exactly another 'abc'
.*       consume, but do not match, the remainder of the input (which must be 'abc')

Затем мы заменим на $1\n$1, которая является первой группой захвата дважды, разделенной новой строкой.

0 голосов
/ 31 января 2020
class Stack{
    public static void main(String $[]){
        foo();
    }
    public static void foo(){
        String in="abc abc abc";//spaces are used as seperator.
        String res[]=in.split(" ");//Returns an Array of String 
        for(int i=0;i<res.length;i++)
            System.out.println(res[i]);
    }
}
output:
    abc
    abc
    abc
0 голосов
/ 31 января 2020

Строка split ():

public class Split { 
public static void main(String args[]) 
{ 
String str = "ABC@ABC"; 
String[] arrOfStr = str.split("@", 5); 
for (String a : arrOfStr) 
System.out.println(a); 
} 
} 

Это также печатает:

ABC
ABC
...