【问题标题】:Pass a CharSequence to a Scanner in Java将 CharSequence 传递给 Java 中的扫描仪
【发布时间】:2018-10-30 14:49:08
【问题描述】:

Scanner 类的构造函数采用String

Scanner s = new Scanner( myString ) ;

如何将CharSequence 对象提供给新的Scanner?我可以先从CharSequence 生成String,但这样做效率低下而且相当愚蠢。

Scanner s = new Scanner( myCharSequence.toString() ) ;  // Workaround, but seems needlessly inefficient to instantiate a `String`. 

我正在寻找一种直接从Scanner 访问CharSequence 的方法。像这样的:

Scanner s = new Scanner( myCharSequence ) ;  // Use `CharSequence` directly.

Scanner 类还在构造函数中采用Readable。可以将CharSequence 表示为Readable 吗?还是有其他解决方法?

【问题讨论】:

    标签: java string java.util.scanner charsequence


    【解决方案1】:

    鉴于构造函数接受String 而不是更通用的CharSequence,你...不能。除非您在CharSequence 上调用toString,否则不会,这将使您返回String,这将满足构造函数的要求。

    因此,问题中看到的调用CharSequence::toString 的解决方法确实是要走的路:

    new Scanner( myCharSequence.toString() ) 
    

    【讨论】:

    • 好的。 :-( 阅读您的答案后,我编辑询问是否可以将CharSequence 呈现为Readable 以满足另一个Scanner 构造函数。
    • Javadoc says, "Nope",因为Readable 不仅不会给你任何代表CharSequence 的东西,而且它看起来不像是真的 i> 成为你想要的,因为Readable 似乎处理其他类似流的实体。
    猜你喜欢
    • 2014-06-21
    • 2016-05-19
    • 2018-10-03
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多