java从更大的字符串(重复字符)中提取子字符串
我有一系列的地址行格式:12345一些地址,一些正方形|电话号码|姓氏
例如:
40327 Ocie Camp Apt. 117, Maywood|1-155-932-2562 x738|Sauer Meredith
76106 Tomas Highway, Santa Ana|722.884.5632|Roberts Westley 19056
Jamarcus Lane, Lawndale|(151)847-7455 x133|Haag Camille 66724 Slip
12-C, Hoover|841.047.3195 x69422|Trantow Danielle 99824 Fisher Locks
#247, Akron|(565)132-9970 x93939|Wiza Bell
我只想提取姓氏部分
我尝试了典型的str.substring(str.indexOf(“|”)和str.indexOf(”),但显然这会导致提取错误的字符串
关于如何从这些字符串中提取姓氏,有什么想法吗
# 1 楼答案
这是正则表达式的工作:
这将输出
# 2 楼答案
我会用Regular Expressions来做这个
代码:
输出:
表达式与给定格式的一行匹配,然后可以轻松访问所需字符串的单个部分
如果您希望将来访问不同的部件,这也更容易维护
# 3 楼答案
你可以用正则表达式来做这个
Demo
代码
输出
完整代码:https://ideone.com/uON0BP
# 4 楼答案
试试这个。它只会给你一个姓氏
# 5 楼答案
使用
lastIndexOf
方法例如:
# 6 楼答案
如果您的数据以某种形式定义为一致的,并且您始终具有如下数据结构:
然后,您可以将每一行拆分为管道字符,并获得索引2处的元素
编辑:
如果某些元素改变了顺序,这种方法将不起作用,如果某些元素丢失,这种方法将不起作用,因此您需要在验证输入之前注意这一点
编辑2:
另一种方法是获取管道的最后一个索引|,并使用字符串#子字符串()进行截断