首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java的自定义令牌程序

Java的自定义令牌程序
EN

Stack Overflow用户
提问于 2013-07-18 12:46:47
回答 1查看 2K关注 0票数 0

我正在开发一个应用程序,在其中我需要处理包含电子邮件的文本文件。我需要文本中的所有标记,下面是令牌的定义:

  1. 字母数字
  2. 区分大小写(需保留的大小写)
  3. “!”而“$”则被认为是构成字符。例:FREE!!$50是代币
  4. “.”(点)和',‘逗号将被视为构成字符,如果它们发生在数字之间。前任: 192.168.1.1,24 500美元 是代币。

以此类推。

请建议我一些开源的Java令牌,它们很容易定制以满足我的需要。仅仅使用StringTokenizer和regex就足够了吗?我还必须执行停止,这就是为什么我正在寻找一个开源令牌程序,它也将执行一些额外的事情,如停止,堵塞。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-19 00:08:49

先提几点意见:

  • 来自StringTokenizer javadoc

StringTokenizer是一个遗留类,由于兼容性原因而保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用String的拆分方法或java.util.regex包。

  • 总是使用谷歌第一--到目前为止的第一个结果是JTopas。我没有用它,但它看起来可以用在这个上面

至于regex,它确实取决于您的需求。鉴于上述情况,这可能有效:

代码语言:javascript
复制
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Mkt {
  public static void main(String[] args) {
    Pattern p = Pattern.compile("([$\\d.,]+)|([\\w\\d!$]+)");
    String str = "--- FREE!! $50 192.168.1.1 $24,500";
    System.out.println("input: " + str);

    Matcher m = p.matcher(str);
    while(m.find()) {
      System.out.println("token: " + m.group());
    }
  }
}

下面是一个示例运行:

代码语言:javascript
复制
$ javac Mkt.java && java Mkt
input: --- FREE!! $50 192.168.1.1 $24,500
token: FREE!!
token: $50
token: 192.168.1.1
token: $24,500

现在,您可能需要调整正则表达式,例如:

  • 您以$24,500为例。这是否适用于$24,500abc$24,500EUR
  • 您提到应该包括192.168.1.1。它是否也包括192,168.1,1 (给定.,将包括在内)?

我想还有其他的事情要考虑。

希望这能让你开始工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17723864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档