Search code examples
javastringsplitcollections

Java string splitting issue


String name = "Chris Mike Soloman Miller Cooper"; I want to split this string to firstname=(first word), lastname=(last word), middlename=(remaining all words). how can I do it without using for loop. Any java 8 feature to implement here ? Desired ans: firstname = Chris, lastname = Cooper, middlename = Mike Soloman Miller I have tried this but I don't want to use for loop.

String name = "Chris Mike Soloman Miller Cooper";
String [] fullName = name.split(" ");
String firstName = fullName[0];
String lastName = fullName[fullName.length-1];
StringBuilder middleName = new StringBuilder();
for(int i=1; i<fullName.length-1; i++) {
    middleName.append(fullName[i]);
    middleName.append(" ");
}

String middleName = String.valueOf(middleName.toString().trim());


Solution

  • As Chaosfire has stated, it's possible to use String.indexOf() and String.lastIndexOf() to search for where the first and last spaces are. After that, it's just a matter of using those indexes to break the original string into substrings.

    public class Main {
        public static void main(String[] args) {
            String name = "Enrico \"The Goat\" Fermi";
            int firstBreak = name.indexOf(" ");
            int lastBreak = name.lastIndexOf(" ");
    
            System.out.println(name.substring(0, firstBreak)); // first name
            System.out.println(name.substring(firstBreak + 1, lastBreak)); // middle name
            System.out.println(name.substring(lastBreak + 1)); // last name
        }
    }