带空格的Java字符串

时间:2017-04-04 09:56:00

标签: java string numbers spaces

感谢您帮助我。

所以我的问题是我需要一个代码,要求你输入一个字符串,如“1234 567”(输入),然后再返回字符串数字,如“1 2 3 4 5 6 7”(输出)  我目前的代码是:

public class StringComEspaços {

    public static String formatNumberWithSpaces(String inputString) {
        String outputString = "222";
        return outputString;
    }

    public static void main(String[] args) {
        System.out.println(formatNumberWithSpaces("123 222 2222"));     
    }
}

感谢您的帮助,抱歉英语不好:)。

3 个答案:

答案 0 :(得分:0)

试试这个功能:

public static String formatNumberWithSpaces(String inputString){
    String outputString = "";                       //Declare an empty String
    for (int i = 0;i < inputString.length(); i++){  //Iterate through the String passed as function argument
        if (inputString.charAt(i) != ' '){          //Use the charAt function which returns the char representation of specified string index(i variable)
            outputString+=inputString.charAt(i);    //Same as 'outputString = outputString  + inputString.charAt(i);'. So now we collect the char and append it to empty string
            outputString+=' ';                      //We need to separate the next char using ' ' 
            }                                       //We do above instruction in loop till the end of string is reached
    }                           
    return outputString.substring(0, outputString.length()-1);
}

只需通过以下方式调用:

System.out.println(formatNumberWithSpaces("123 222 2222"));

编辑:

或者如果您想要求用户输入,请尝试:

Scanner in = new Scanner(System.in);
System.out.println("Give me your string to parse");
String input = in.nextLine(); //it moves the scanner position to the next line and returns the value as a string.                 
System.out.println(formatNumberWithSpaces(input)); // Here you print the returned value of formatNumberWithSpaces function

不要忘记导入,这样您就可以阅读用户输入:

import java.util.Scanner;

有多种方法可以从键盘读取输入, java.util.Scanner 类就是其中之一。

EDIT2:

我改变了:

return outputString;

..来:return outputString.substring(0, outputString.length()-1);

仅仅因为outputString+=' ';也在字符串末尾附加空格,这是无用的。没有在if内部添加for循环,在解析最后一个字符时不会增加空间,这只是因为它在for循环内的低性能。

答案 1 :(得分:0)

  

使用此代码。

public class StringComEspaços {

    public static void main(String[] args) {
        System.out.println(formatNumberWithSpaces("123 222 2222"));
    }

    private static String formatNumberWithSpaces(String string) {
        String lineWithoutSpaces = string.replaceAll("\\s+", "");
        String[] s = lineWithoutSpaces.split("");
        String os = "";

        for (int i = 0; i < s.length; i++) {
            os = os + s[i] + " ";
        }
        return os;
    }
}

答案 2 :(得分:0)

有许多方法可以解决您的问题。

您可以使用StringBuilder以OO方式执行此操作:

public static String formatNumberWithSpaces(String inputString) {
    StringBuilder output = new StringBuilder();
    for (char c : inputString.toCharArray())     // Iterate over every char
        if (c != ' ')                            // Get rid of spaces
            output.append(c).append(' ');        // Append the char and a space
    return output.toString();
}

只需使用String运算符代替StringBuilder方法,您也可以使用+代替.append()

或者你可以做得更多&#34;现代&#34;通过使用Java 8功能的方式 - 在我看来这很有趣,但不是最好的方式 - 例如像这样:

public static String formatNumberWithSpaces(String inputString) {
    return Arrays.stream(input.split(""))        // Convert to stream of every char
                 .map(String::trim)              // Convert spaces to empty strings
                 .filter(s -> !s.isEmpty())      // Remove empty strings
                 .reduce((l, r) -> l + " " + r)  // build the new string with spaces between every character
                 .get();                         // Get the actual string from the optional
}

尝试一些适合你的东西。