سؤال

وأنا أحاول أن استخدام فئة الماسح الضوئي لقراءة خط باستخدام المقبل (نمط نمط) طريقة للقبض على النص قبل النقطتين ثم بعد النقطتين بحيث S1 و S2 = textbeforecolon = textaftercolon.

والخط يبدو مثل هذا:

وشيء: somethingelse

هل كانت مفيدة؟

المحلول

وهناك طريقتان للقيام بذلك، وهذا يتوقف على وجه التحديد ما تريد.

إذا كنت تريد تقسيم مدخلات بأكمله بنقطتين، ثم يمكنك استخدام الأسلوب useDelimiter()، مثل الآخرين وأشار إلى:

// You could also say "scanner.useDelimiter(Pattern.compile(":"))", but
// that's the exact same thing as saying "scanner.useDelimiter(":")".
scanner.useDelimiter(":");

// Examines each token one at a time
while (scanner.hasNext())
{
    String token = scanner.next();
    // Do something with token here...
}

إذا كنت تريد تقسيم كل سطر بنقطتين، ثم أنه سيكون من الأسهل بكثير استخدام طريقة String split() ل:

while (scanner.hasNextLine())
{
    String[] parts = scanner.nextLine().split(":");
    // The parts array now contains ["something", "somethingelse"]
}

نصائح أخرى

وأنا لم تستخدم نمط مع الماسح الضوئي.

ولقد دائما مجرد تغيير delimeter مع سلسلة. HTTP : //java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#useDelimiter (java.lang.String)

File file = new File("someFileWithLinesContainingYourExampleText.txt");
Scanner s = new Scanner(file);
s.useDelimiter(":");

while (!s.hasNextLine()) {
    while (s.hasNext()) {
        String text = s.next();
    System.out.println(text);
    }

    s.nextLine();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top