Tuesday, March 31, 2015

Split String to array with whitespace

Example to split String to String array, by whitespace. And also join String array to String.


package javasplitestring;

import java.util.Scanner;

/**
 * @web http://java-buddy.blogspot.com/
 */
public class JavaSpliteString {

    public static void main(String[] args) {
        String original;
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a string:");
        original = scanner.nextLine();
        
        //split String to array splited with whitespace regex
        String[] splittedStringArray = original.split("\\s+");
        System.out.println("length = " + splittedStringArray.length);
        
        for(String s : splittedStringArray){
            System.out.println(s);
        }
        
        //Join the String array to a String using StringBuilder
        StringBuilder stringBuilder = new StringBuilder();
        for(String s : splittedStringArray){
            stringBuilder.append(s);
        }
        System.out.println(stringBuilder);
    }
    
}

Saturday, March 28, 2015

JavaFX example: save TextArea to file, using FileChooser

JavaFX example show how to get content from TextArea, and save it as txt file using FileChooser.


package javafxsavetext;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

/**
 * @web http://java-buddy.blogspot.com/
 */
public class JavaFXSaveText extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("java-buddy.blogspot.com");
        Group root = new Group();
        
        TextArea textArea = new TextArea();

        Button buttonSave = new Button("Save");
                
        buttonSave.setOnAction((ActionEvent event) -> {
            FileChooser fileChooser = new FileChooser();
            
            //Set extension filter
            FileChooser.ExtensionFilter extFilter = 
                new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
            fileChooser.getExtensionFilters().add(extFilter);
            
            //Show save file dialog
            File file = fileChooser.showSaveDialog(primaryStage);
            
            if(file != null){
                SaveFile(textArea.getText(), file);
            }
        });
        
        VBox vBox = new VBox();
        vBox.getChildren().addAll(textArea, buttonSave);
        
        root.getChildren().add(vBox);
        
        primaryStage.setScene(new Scene(root, 500, 400));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

    private void SaveFile(String content, File file){
        try {
            FileWriter fileWriter;
             
            fileWriter = new FileWriter(file);
            fileWriter.write(content);
            fileWriter.close();
        } catch (IOException ex) {
            Logger.getLogger(JavaFXSaveText.class
                .getName()).log(Level.SEVERE, null, ex);
        }
         
    }
    
}


Related:
- Read text file with JavaFX FileChooser

Friday, March 27, 2015

Reverse String, reverse words order, reverse chars in words

This example show various methods to reverse chars in String, reverse words order, and reverse chars in words but keep words in order.


package javareversestring;

import java.util.List;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;

/**
 *
 * @web http://java-buddy.blogspot.com/
 */
public class JavaReverseString {

    public static void main(String[] args) {
        String original;
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a string:");
        original = scanner.nextLine();
        
        String reverseString = "";
        for(int i=original.length()-1; i>=0; i--){
            reverseString= reverseString + original.charAt(i);
        }
        System.out.println(reverseString);
        
        System.out.println(new StringBuffer(original).reverse().toString());
        System.out.println(reverseWords(original));
        System.out.println(reverseCharsInWords(original));
    }

    //reverse words
    static private String reverseWords(String src){
        String reversed = "";
        
        Stack<String> stackString = new Stack<>();
        StringTokenizer stringTokenizer = new StringTokenizer(src);
        
        while(stringTokenizer.hasMoreTokens()){
            stackString.push(stringTokenizer.nextToken());
        }
        
        while(!stackString.empty()){
            reversed += stackString.pop() + " ";
        }
        
        return reversed;
    }
    
    //reverse chars in words
    static private String reverseCharsInWords(String src){
        String reversed = "";
        
        List<String> listString = new Stack<>();
        StringTokenizer stringTokenizer = new StringTokenizer(src);
        
        while(stringTokenizer.hasMoreTokens()){
            listString.add(stringTokenizer.nextToken());
        }
        
        while(!listString.isEmpty()){
            String s = listString.remove(0);
            reversed += new StringBuffer(s).reverse().toString() + " ";
        }
        
        return reversed;
    }
}