坚持这个小项目。无法弄清楚如何将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
答案 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}}返回,并以数组形式返回。