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

如何使数字脱颖而出?

扶文光
2023-03-14
问题内容

我正在使用Java
StreamTokenizer提取字符串的各种单词和数字,但是遇到了一个问题,其中涉及到逗号在内的数字,例如10,567被读为10.0和,567。

我还需要从可能会出现的数字中删除所有非数字字符,例如$ 678.00应该是678.00或-87应该是87。

我相信可以通过whiteSpace和wordChars方法实现这些目标,但是有人知道如何实现吗?

当前基本的streamTokenizer代码为:

        BufferedReader br = new BufferedReader(new StringReader(text));
        StreamTokenizer st = new StreamTokenizer(br);
        st.parseNumbers();
        st.wordChars(44, 46); // ASCII comma, - , dot.
        st.wordChars(48, 57); // ASCII 0 - 9.
        st.wordChars(65, 90); // ASCII upper case A - Z.
        st.wordChars(97, 122); // ASCII lower case a - z.
        while (st.nextToken() != StreamTokenizer.TT_EOF) {
            if (st.ttype == StreamTokenizer.TT_WORD) {                    
                System.out.println("String: " + st.sval);
            }
            else if (st.ttype == StreamTokenizer.TT_NUMBER) {
                System.out.println("Number: " + st.nval);
            }
        }
        br.close();

还是有人建议REGEXP实现这一目标?我不确定REGEXP在这里是否有用,因为在从字符串中读取令牌后会进行任何解析。

谢谢

摩根先生。


问题答案:

StreamTokenizer已过时,最好使用Scanner,这是您的问题的示例代码:

    String s = "$23.24 word -123";
    Scanner fi = new Scanner(s);
    //anything other than alphanumberic characters, 
    //comma, dot or negative sign is skipped
    fi.useDelimiter("[^\\p{Alnum},\\.-]"); 
    while (true) {
        if (fi.hasNextInt())
            System.out.println("Int: " + fi.nextInt());
        else if (fi.hasNextDouble())
            System.out.println("Double: " + fi.nextDouble());
        else if (fi.hasNext())
            System.out.println("word: " + fi.next());
        else
            break;
    }

如果要使用逗号作为浮点定界符,请使用fi.useLocale(Locale.FRANCE);



 类似资料:
  • 本文向大家介绍你想要做什么类型的游戏?如何让你的游戏从同类型游戏中脱颖而出?相关面试题,主要包含被问及你想要做什么类型的游戏?如何让你的游戏从同类型游戏中脱颖而出?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 到目前为止,给我带来了很多麻烦,所以我想摆脱它。尽管spring框架文档清楚地说明了应该做的事情,但实际上 并没有摘要列表。 所以我一直坚持删除并得到错误 -在名称为的中找不到带有请求的映射 对于所有应该由控制器类解决的Url(在这种情况下:)。有什么建议可以让我了解更多信息吗?我非常想知道到底由代表什么标签。 问题答案: 你可以用来自定义定义的每个bean 。现在,javadocs详

  • 问题内容: 到现在为止,给我造成了很多麻烦,所以我想摆脱它。尽管spring框架文档清楚地说明了应该做的事情,但实际上 并没有摘要列表。 所以我坚持删除并现在得到错误 WARN osweb.servlet.PageNotFound-在DispatcherServlet中,名称为’workoutsensor’的URI [/ webapp / trainees]的HTTP请求未找到映射 对于所有应该由

  • 问题内容: 我已经在中解析了JSON数据,现在想使其脱机使用。有没有一种方法可以将JSON数据保存在电话上,以便在电话离线时可以查看数据? 有人知道一个例子吗? 编辑现在可以使用: 问题答案: 您有两种方法。您可以创建一个数据库,然后将所有数据保存在那里,并在需要时将其取回。或者,如果您拥有的数据不是很多,并且您不想处理数据库,那么您可以将json字符串写入存储卡中的文本文件,并在离线时稍后阅读。

  • 问题内容: 就像是: 此代码引发异常,因为在迭代时更改了字典。 我发现另一本词典只有非常规的解决方案: 谢谢 问题答案: 另一种写法是 在Python3中,这变成

  • 问题内容: 每当我同步开发数据库时,我就一直手动将主节点(也是唯一的节点)脱机,以避免发生一系列错误的测试失败。我有一个脚本可以执行完整的数据库导入,并且还希望自动执行节点维护。 如何使用命令行界面JAR暂时将主节点标记为脱机? 我编写了一个简单的Bash脚本来执行Jenkins任务。 我可以使用该脚本进行身份验证。 但是,我无法获取或识别主节点。帮助指出,我可以省略“ master”的节点名称,