当前位置: 首页 > 面试题库 >

如何在Java Scanner中使用定界符?

章振
2023-03-14
问题内容
sc = new Scanner(new File(dataFile));
sc.useDelimiter(",|\r\n");

我不了解分隔符的工作原理,有人可以用外行人的方式解释吗?


问题答案:

扫描仪还可以使用空格以外的定界符。

来自Scanner API的简单示例:

 String input = "1 fish 2 fish red fish blue fish";

 // \\s* means 0 or more repetitions of any whitespace character 
 // fish is the pattern to find
 Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");

 System.out.println(s.nextInt());   // prints: 1
 System.out.println(s.nextInt());   // prints: 2
 System.out.println(s.next());      // prints: red
 System.out.println(s.next());      // prints: blue

 // don't forget to close the scanner!!
 s.close(); 

关键是要了解内的正则表达式(regex)Scanner::useDelimiter。在此处找到useDelimiter教程。

要从正则表达式开始,你可以在这里找到一个不错的教程。

笔记

abc…    Letters
123…    Digits
\d      Any Digit
\D      Any Non-digit character
.       Any Character
\.      Period
[abc]   Only a, b, or c
[^abc]  Not a, b, nor c
[a-z]   Characters a to z
[0-9]   Numbers 0 to 9
\w      Any Alphanumeric character
\W      Any Non-alphanumeric character
{m}     m Repetitions
{m,n}   m to n Repetitions
*       Zero or more repetitions
+       One or more repetitions
?       Optional character
\s      Any Whitespace
\S      Any Non-whitespace character
^…$     Starts and ends
(…)     Capture Group
(a(bc)) Capture Sub-group
(.*)    Capture all
(ab|cd) Matches ab or cd


 类似资料:
  • 问题内容: 有人告诉我,我需要在触发器中使用定界符。我正在查看MySQL手册页,并在示例中找到了它。但是,它不在通用文档中。 这是我要纠正的代码: 老实说,我不知道如何执行此操作,并且http://dev.mysql.com/doc/refman/5.5/en/create- trigger.html上 的文档似乎是一个非常不足的参考。例如,当阅读“ ”和“ ”时,它引用“ ”-与触发器关联的表。

  • 我试图在typescript中创建一个带有子对象的对象。我正在尝试建立一个猫鼬模式,如本问题所示。 如果我将对象和子对象定义为接口,我就不能在可以设置为mongoose模式的常量中使用它们。 那么,有没有一种方法可以让我不必两次键入整个子对象,一次在接口中,一次输入常量中?

  • 问题内容: 我将AngularJS用作前端JS库,并在Revel框架中使用Go模板来在后端生成标记。 但是Go和Angular 在模板中都使用和分隔符。如何在Go中转义它们以将它们传递给AngularJS? 问题答案: 我不知道如何转义它,但是您可以选择其他定界符,而不是使用: 根据邮件列表,这可能是最佳选择。争论是,如果您逃避了它,您的模板将很难阅读,因此无论如何更改定界符而不是尝试破解它可能会

  • 问题内容: 我有一个文本文件,其中包含许多置换以及特殊字符,空格和数据的组合。我将此文件的内容存储到数组列表中,如果我不使用函数,则Java会完美读取我的文本。 唯一的问题是它不接受 逗号 ()和 点 ()作为定界符。 我知道我可以使用用 逗号 , 点 , 空间 的分隔符和其他选项一样好,但后来我得到的结果如Java给了我现在是不正确的。 有没有一种方法可以指示java使用 逗号 和 点 作为分隔

  • 我正在为第三方 js 库创建一个 TypeScript 定义文件。其中一个方法允许选项对象,选项对象的一个属性接受列表中的字符串:“和 我有一个选项对象的接口: 接口是否可以强制执行这一点,因此如果您将对象与属性一起包含,它将只允许可接受列表中的字符串?

  • 问题内容: 在Go中,如果我有一个字符串变量s: 我如何将其转换或拆分或爆炸为切片或字符串数​​组,以使其变为: 问题答案: 您应该使用该软件包。 http://play.golang.org/p/UKZbcuJUPP