有一个用于Java的isSomething()库吗?

有一个用于Java的isSomething()库吗?,java,definition,Java,Definition,我想知道是否有一个用于Java的库,它的实现方式如下:isTemperature(),isPercentual(),isDistanceUnit(),isWeightUnit(),ispropertName(),isYear(),isPhone(),isLocation(),还有更多可以定义的内容 我不仅对单位感兴趣,而且对所有可能的分类类型都感兴趣,比如数字或单词 这将用于对文本中的单词进行分类。在您已经使用过的语言中是否有等效的库 我想不出有多少应用程序需要检查单个数据源中是否存在所有这些格

我想知道是否有一个用于Java的库,它的实现方式如下:
isTemperature()
isPercentual()
isDistanceUnit()
isWeightUnit()
ispropertName()
isYear()
isPhone()
isLocation()
,还有更多可以定义的内容

我不仅对单位感兴趣,而且对所有可能的分类类型都感兴趣,比如数字或单词


这将用于对文本中的单词进行分类。

在您已经使用过的语言中是否有等效的库

我想不出有多少应用程序需要检查单个数据源中是否存在所有这些格式,但我会使用正则表达式来完成这项工作

编辑:


如果您的数据是异构的,并且您只想知道它是什么,那么您可能需要某种分类器。尝试或。

尝试出现在您上方的前两个链接之一:


您真正需要的是一些本体来添加大量上下文。退房并离开。您所要求的远远不止是验证和正则表达式。在重读您的问题之后,听起来您想阅读一个文档,并让您的解析器从上下文中挑选出与这些单元匹配的标记并辨别它们是什么。如果你说得对,你就有一个很难解决的问题。它更像是自然语言处理过程。

我不知道。但是,您仍然可以自己创建做同样事情的方法

isTemperature()
isPercentual()
isDistanceUnit()
isPropertName()
isYear()
isPhone()
你还没有说你要查哪种电话号码。我猜你想要这种形式的(865-867-5309)

isLocation()
很抱歉,我现在不能给你这个(

isEmail()
布尔isEmail(字符串检查){
字符串[]emailDomains={.com“,.net“,.org”};
String[]emailProviders={“gmail”、“yahoo”、“hotmail”、“aol”、“tds”、“comcast”、“charter”、“peoplepc”};//如果需要,请添加更多内容
char[]check2=check.toCharArray();


对于(int i=0;我是用Java开发的。我考虑过RegEx,但会有大量的验证,所以在我编写RegEx之前,最好先尝试一些方法。其中一些方法是非常特定于位置的。例如,你想知道来自英国或美国的电话号码是否有效吗?是的,有些非常特定,所以只有一些可以是v已验证,不是世界上所有的。其他项目也是如此。例如,温度,只有最常见的(塞尔西斯、华氏、开尔文)我将在这些Bayesian分类器上抢夺。也许他们可以解决我的问题,但这两个示例很久没有更新(2004年和2005年)。它们很好?有更新的东西吗?有许多分类器库可供选择,许多跨平台。尝试用谷歌搜索更多。不看原始数据,我猜某种朴素的贝叶斯或LSI分类器会满足您的要求,前提是您有足够的示例数据进行训练。无论您选择哪一种e的使用取决于你,它可能是你认为最容易使用的。你能更具体地说明你想做什么吗?它是vague@Nishant我想获取文本中的所有单词,并尽可能将其分类。您希望输入什么?例如,它是一个数字还是一个字符串,组成单位:
100
“100°C”
“100°F”
“100 K”中的一种
对于温度?@Bruno第二种情况,是带有单位的数字。一个输入可以是两个或两个以上相同类型的东西,如果不同类型的测量单位相等,则没有问题。在我上面?我没有看到这些链接,但谢谢,我会看一看。但重要的是,我感兴趣的不仅仅是单位,尽管文字不那么重要比数字更容易识别。是的,你的链接是谷歌返回的第三个链接。引用涉及单位;你可能需要其他补充。我的观点是,简单的谷歌搜索会让你继续做一些事情,而且比阅读和向下投票更快。这几乎不值得花时间去看。我不担心我听说有人投了反对票。那里……即使没有这样一个图书馆,现在也有了。:)是的,这是我想做的。非常令人印象深刻。@fireshadow52 Chris answer向我展示了一件我可能会在我的软件中使用的东西,所以它给我的答案对我的项目很有用。你的答案就是我所问问题的一个例子(我所问的可能不是正确的选择)并且对大多数需要使用它的人来说都是有价值的,所以是的,我会接受你的回答。@fireshadow52如果你有兴趣做更多的工作,请做一个ISinialism/首字母缩写(),isEmail(),isWebProtocol()而且你猜你还想做什么。很公平。看看苹果的LSI分类代码,这也是iPhone和OS X上的邮件应用程序如何识别地址、电话号码等。
boolean isTemperature(String check) {
    char[] letters = check.toCharArray();
    if (check.indexOf("°").equals((letters.length - 1)) {
        return true;
    }
    return false;
}
boolean isPercentual(String check) {
    try {
        double verify = Double.parseDouble(check);
    } catch (NumberFormatException e) {
        return false;
    }
    char[] numbers = check.toCharArray();
    if (check.indexOf("%").equals(numbers.length) {
        return true;
    }
    return false;
}
boolean isDistanceUnit(String check, boolean customary) {
    String[] customaryUnits = {"mi","yd","ft","in"};
    String[] metricUnits = {"mm","cm","dm","m","km"};
    if (customary) {
        for (int i = 0; i <= customaryUnits.length; i++) {
            if (check.toLowerCase().contains(customaryUnits[i])) {
                return true;
            }
        }
        return false;
    } else {
        for (int i = 0; i <= metricUnits.length; i++) {
            if (check.toLowerCase().contains(metricUnits[i])) {
                return true;
            }
        }
        return false;
    }
}
boolean isWeightUnit(String check, boolean customary) {
    String[] customaryUnits = {"lb","oz","T"};
    String[] metricUnits = {"kg"}; //I'm sorry that's all I know :(
    if (customary) {
        for (int i = 0; i <= customaryUnits.length; i++) {
            if (check.toLowerCase().contains(customaryUnits[i])) {
                return true;
            }
        }
        return false;
    } else {
        for (int i = 0; i <= metricUnits.length; i++) {
            if (check.toLowerCase().contains(metricUnits[i])) {
                return true;
            }
        }
        return false;
    }
}
boolean isProperName(String check) {
    char[] letters = check.toCharArray();
    String[] capLetters = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    for (int i = 0; i <= capLetters.length; i++) {
        if (letters[0].equals(capLetters[i])) {
            return true;
        }
    }
    return false;
}
import java.text.SimpleDateFormat;
import java.text.ParseException;
//--------------------------------------------------------------------------------
boolean isDate(String check) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    if (check.trim().length != dateFormat.toPattern().length) {
        return false;
    }
    dateFormat.setLenient(false);
    try {  
        dateFormat.parse(check.trim());
    } catch (ParseException pe) {
        return false;
    }
    return true;
}
boolean isYear(String check) {
    try {
        int verify = Integer.parseInt(check);
    } catch (NumberFormatException e) {
        return false;
    }
    char[] verify2 = check.toCharArray();
    if ((verify2.length).equals(4)) {
        return true;
    }
    return false;
}
boolean isPhone(String check) {
    float firstHyphen = check.indexOf("-");
    char[] numbers = check.toCharArray();
    float check2 = numbers.length / 3;
    if (firstHypen.equals(check2)) {
        return true;
    }
    return false;
}
boolean isEmail(String check) {
    String[] emailDomains = {".com",".net",".org"};
    String[] emailProviders = {"gmail","yahoo","hotmail","aol","tds","comcast","charter","peoplepc"}; //add more if you want
    char[] check2 = check.toCharArray();
    for (int i = 0; i <= emailProviders.length; i++) {
        for (int x = 0; x <= emailDomains.length; x++) {
            if ((check.indexOf(emailDomains[x]).equals(check2.length)) && (check.indexOf(emailProviders[i]).equals(check2.length - emailDomains[x].toCharArray().length)) {
            return true;
            }
        }
    }
    return false;
}