从字符串中分离char?

时间:2014-11-19 12:45:33

标签: java

我试图将char与以下输入示例分开:

C450.00 C30 P100

我想将“C”或“P”这样的字母分开,这样我就可以单独使用它们, 以及以“int”分隔的“450.00”,“30”和“100”。最简单的方法是什么?

6 个答案:

答案 0 :(得分:1)

如果String始终是那种格式:

char ch = yourString.charAt(0);
Double d = Double.valueOf(yourString.substring(1, yourString.length()));

注意: 我使用了Double,因为.中有点String。如果您没有任何小数,则可以轻松地从double转换为int。但这取决于你的需要。

答案 1 :(得分:1)

您可以将带有空格的String拆分为分隔符。然后在字符串的每个部分使用子字符串。现在你有了C和450.0作为Stings。最后将子字符串的第二部分转换为整数,然后就完成了。

分裂:

String[] parts = string.split(" ");

到substring:

String first = parts[0].substring(0, 1);
String second = parts[0].substring(1);

答案 2 :(得分:0)

假设你知道你在给定的字符串中寻找什么(例如,你知道你正在寻找C字符),你可以使用正则表达式模式:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

答案 3 :(得分:0)

您可以使用此库org.apache.monsons.lang3. StringUtils http://commons.apache.org/proper/commons-lang/download_lang.cgi

public static String [] split(String str,String separatorChars)

    String[] res = StringUtils.split("C450.00 C30 P100", "CP ");        
    for (String r : res) {
        System.out.println(r);
    }

答案 4 :(得分:0)

我假设单独的数字'总是采用这种格式:

C130
P90
V2.0

即单个字母后跟一个数字(可能带有浮点数)。

String input = "C450.00 C30 P100";

// First split the string by a space
String[] parts = input.split(" ");

for (String part : parts) {
    // Get the character from the string
    char ch = part.charAt(0);

    // Get the remains of the string and convert it to a double
    double number = Double.parseDouble(part.substring(1));

    // Then do something with 'ch' and 'number'
}

如果单独的部分可能包含两个或更多字母,例如AC130,那么你需要另一种方法:

String input = "AC130 AG36 P90";
String[] parts = input.split(" ");

for (String part : parts) {
    /* Do some regular expression magic. */
}

请参阅http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

答案 5 :(得分:0)

这里是一段代码:

public static void main(String[] args) {

    String a = "C450.00 C30 P100";
    String letters = "";
    String numbers = "";

    for (int i = 0; i < a.length(); i++) {
        if ((a.charAt(i) + "").matches("\\d|\\.| ")) {
            numbers += a.charAt(i);
        } else {
            letters += a.charAt(i);
        }
    }
    String[] strArray = numbers.split(" ");
    int[] numberArray = new int[strArray.length];
    for (int i = 0; i < strArray.length; i++) {
        numberArray[i] = (int) Double.parseDouble(strArray[i]);
        System.out.println(numberArray[i]);
    }
    System.out.println(letters);
}

结果为numberArray,其中包含所有数字作为整数 和letters,这是一个包含所有字母的字符串。