正则表达式避免:和,在字符串
问题描述:
我有一个字符串来自数据库。 字符串是这样的: -正则表达式避免:和,在字符串
ABC:def,ghi:jkl,hfh:fhgh,ahf:jasg
总之String:String
,并重复了较大的值。
我需要解析此字符串以获得不作任何:
或,
单词和每个单词存储在ArrayList中
我可以用分割功能(两次),这样做,但我想通了,使用正则表达式我可以做它一气呵成,并得到该ArrayList ..
String strLine="category:hello,good:bye,wel:come";
Pattern titlePattern = Pattern.compile("[a-z]");
Matcher titleMatcher = titlePattern.matcher(strLine);
int i=0;
while(titleMatcher.find())
{
i=titleMatcher.start();
System.out.println(strLine.charAt(i));
}
但是它没有给我正确的results..It结束了给我比赛的索引中找到的,然后我需要追加它是不那么合乎逻辑的,高效的, 。
有各地的任何方式..
答
String strLine="category:hello,good:bye,wel:come";
String a[] = strLine.split("[,:]");
for(String s :a)
System.out.println(s);
答
即使可以使用正则表达式来一次解析整个字符串,我认为这将是比用多个步骤拆分它的可读性。
答
使用Java StringTokenizer 样品:
StringTokenizer st = new StringTokenizer(in, ":,");
while(st.hasMoreTokens())
System.out.println(st.nextToken());
哪一个更有效的......我知道我可以很容易使用令牌,但我认为采用分体式会更高效,代币.. – AngelsandDemons 2012-04-06 06:24:45
它取决于字符串的长度。如果字符串非常短,您可以分割,如果它很长,最好迭代令牌。然后使用标记器可以跳过空标记,例如,如果在循环过程中有“a :: b:c”。 – dash1e 2012-04-06 06:33:13
我的字符串可以很短或可以非常非常long.One事情肯定字符串的形成总是相同的.. String1:AssociatedString,String2:AssociatedString等.. – AngelsandDemons 2012-04-06 07:58:48