Java区分四个相似的字符串

时间:2016-08-24 09:27:49

标签: java

我正在编码的这个特殊类从文本文件中获取其输入,该文本文件是从调查图上使用的OCR软件获得的。输入数据相当脏,这个类的目的是清理它,最后将它分配给一个对象数组,然后由其他类使用。

现在我的问题:我需要能够识别4种不同类型的字符集。如果我的代码在行的开头找到它们,它知道特定的行需要包含在我想要使用的String []数组中。它需要识别的四个集合格式为“AZ”,“A1Z1”,“ZA1”“Z1A”(可以是任何字母字符和1-9个数字)

String typeOne = "AZ1063.662521446A63764.73138685.41"

哪个被分成了     “AZ”,1063.66,“2521446”,“A”,63764.73,138675.41

String typeTwo = "A1Z11063.662521446A63764.73138685.41"

分为“A1Z1”,1063.66,“2521446”,“A1”,63764.73,138675.41

String typeThree "ZA111063.662521446A63764.73138685.41"

分为:“ZA1”,1063.66,“2521446”,“Z”,63764.73,138675.41

String typeFour "Z1A1063.662521446A63764.73138685.41"

分为“Z1A”,1063.66,“2521446”,“Z1”,63764.73,138675.41

现在问题是到目前为止我设法设计的每个测试都无法区分typeOne和typeThree,因为两个字符串中的第三个字符始终是一个数字,而这些字符串从不具有固定长度。我真的很好奇我如何能够发现两种类型之间的区别。

编辑:为了澄清 - 我想要的第二组数据,在初始'标识符'(AZ1)之后将转换为double(1063.66)。这意味着我需要识别AZ1的情况,因此1不会被添加到double(11063.66)。虽然如果组成弦的不同部分具有固定的长度,这将是相对简单的,但它们不是,因此问题。

2 个答案:

答案 0 :(得分:0)

对不起,您为什么不使用正则表达式匹配?如果在案例3中,首字母等于第18个字母(从您给出的示例中可以看出),这就是表达式

s.matches("^[A-Z]{2}[0-9].*") && (s.charAt(0) == s.charAt(18));

如果case3字符串比case1长(从你给出的例子看来),这就是表达式

s3.matches("^[A-Z]{2}.{34}");

答案 1 :(得分:-2)

你可以使用方法startsWith()之类的;

let alert = UIAlertController(title: “Got it”, message: “Please, select:”, preferredStyle: UIAlertControllerStyle.Alert)


name01: String = "name01"
name02: String = "name02"
name03: String = "name03" 

if switch01.on {
        let action01 = UIAlertAction(title: name01, style: .Default) { (_) in }
    }
    if switch02.on {
        let action02 = UIAlertAction(title: name02, style: .Default) { (_) in }
    }
    if switch03.on {
        let action03 = UIAlertAction(title: name03, style: .Default) { (_) in }
    }



    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (_) in }

    alert.addAction(action01)//Cannot convert value of type 'String' to expected argument type 'UIAlertAction'
    alert.addAction(action02)//Cannot convert value of type 'String' to expected argument type 'UIAlertAction'
    alert.addAction(action03)//Cannot convert value of type 'String' to expected argument type 'UIAlertAction'
    alert.addAction(cancelAction)//No error

第二行将返回true;