将字符串转换为多个字符串

时间:2014-09-01 03:52:47

标签: java string

坚持这个小项目。无法弄清楚如何将String拆分为String []中的多个字符串。

示例:

String exampleString = "one two three four five";
String[] exmplString = {"one", "two", "three", "four", "five"};

我有什么:

static File interfacepath;
FileReader fr;
BufferedReader br;
static String currentLine;
static String[] parseableLine;
Integer lineNumber;

public void readFile(Integer interfaceID) throws IOException {

    interfacepath = new File("data/csgui/interface_" + interfaceID
            + ".csgui");

    fr = new FileReader(interfacepath.getAbsolutePath());

    br = new BufferedReader(fr);

    br.read();

    getLine(1);
}

public static void getLine(Integer lineNumber) throws IOException {

    try (LineNumberReader lnr = new LineNumberReader(new FileReader(
            interfacepath))) {

        for (String line = null; (line = lnr.readLine()) != null;) {

            if (lnr.getLineNumber() == lineNumber) {

                currentLine = line;
                parseableLine = currentLine.split("\\s+");

                System.out.println(parseableLine);

        }
            System.out.println(currentLine);

    }

}
}

当我运行应用程序时,它返回:

[Ljava.lang.String;@5bcf4b61
 testTable Table 1280 720 350 350 1

&安培;我遇到了什么麻烦:

{testTable, Table, 1280, 720, 350, 350, 1}
testTable Table 1280 720 350 350 1

4 个答案:

答案 0 :(得分:1)

.split(..)正是您正在寻找的,假设您要分割的每个字符串之间始终至少有一个空格。

public static String[] splitBySpace(String s){
    return s.split("\\s+");
}

答案 1 :(得分:1)

如果我理解您的问题,您可以使用String.split(String)之类的内容

public static void main(String[] args) {
    String str = "testTable Table 1280 720 350 350 1";
    String[] strArr = str.split("\\s+");
    System.out.println(Arrays.toString(strArr));
}

输出

[testTable, Table, 1280, 720, 350, 350, 1]

因为regular expression "\\s+"匹配一个或多个空白字符。

修改

根据您更新的代码,

System.out.println(parseableLine);

应该是

System.out.println(Arrays.toString(parseableLine));

你得到[Ljava.lang.String;@5bcf4b6(并且需要Arrays.toString(Object[])),因为Java数组不会覆盖toString()

答案 2 :(得分:1)

每个人都使用java.lang.String#split(),所以我使用了java.util.StringTokenizer

String exampleString = "testTable Table 1280 720 350 350 1";
StringTokenizer stringTokenizer = new StringTokenizer(exampleString," ");
List<String> list = new ArrayList<String>();
while (stringTokenizer.hasMoreTokens()){
     list.add(stringTokenizer.nextToken());
 }
String str[] = list.toArray(new String[list.size()]);
System.out.println(java.util.Arrays.toString(str));

StringTokenizer的构造函数接受要与分隔符一起标记的字符串。

答案 3 :(得分:0)

您需要更改

return new String[] { sb.toString()};

return sb.toString().split("\\s");.

sb.toString()按空格testTable Table 1280 720 350 350 1将{{1}}返回,并以数组形式返回。