0

次のような形式のtxtファイルがあります。

Name 'Paul' 9-years old

「readline」から取得するにはどうすればよいですか。

String the_name="Paul"

int the_age=9

Javaで、残りをすべて破棄しますか?

私は持っている:

  ...       
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    StringBuffer stringBuffer = new StringBuffer();
    String line;
    while ((line = bufferedReader.readLine()) != null) {

       //put the name value in the_name

       //put age value in the_age

    }
...

提案してください、ありがとう。

4

3 に答える 3

2

使用していてBufferedReader、すべてが 1 行にあるため、データを抽出するには分割する必要があります。次に、引用符を削除して年齢の年の部分を抽出するために、いくつかの追加の書式設定が必要です。派手な正規表現は必要ありません:

String[] strings = line.split(" ");
if (strings.length >= 3) {
   String the_name= strings[1].replace("'", "");
   String the_age = strings[2].substring(0, strings[2].indexOf("-"));
}

この機能がwhileループしていることに気付きました。これが機能するためには、すべての行がフォーマットを維持していることを確認してください。

text 'Name' digit-any other text
    ^^    ^^     ^

重要な文字は

  • スペース: 分割配列に必要な最小 3 トークン
  • 一重引用符
  • -ハイフン文字
于 2012-11-09T23:27:11.663 に答える
1

java.util.regex.Pattern を使用します。

Pattern pattern = Pattern.compile("Name '(.*)' (\d*)-years old");
for (String line : lines) {
    Matcher matcher = pattern.matcher(line);
    if (matcher.matches()) {
        String theName = matcher.group(1);
        int theAge = Integer.parseInt(matcher.group(2));
    }
}
于 2012-11-10T00:41:47.173 に答える
0

String.substring、、、およびメソッドを次のようString.indexOfに使用できます。String.lastIndexOfInteger.parseInt

String line = "Name 'Paul' 9-years old";
String theName = line.substring(line.indexOf("'") + 1, line.lastIndexOf("'"));
String ageStr = line.substring(line.lastIndexOf("' ") + 2, line.indexOf("-years"));
int theAge = Integer.parseInt(ageStr);
System.out.println(theName + " " + theAge);

出力:

ポール 9

于 2012-11-09T23:33:16.093 に答える