2014-01-06 37 views
1

我有一个脚本,其中我必须从字符串中提取字符串,获取最后一个索引,获得字符串中的第n个字符,比较,字符串包含一个字符串或不等等等我想了解在java中对字符串进行这种操作的最佳方法/实践。我是否应该始终使用StringBuilder来执行上述操作。在少数情况下,我使用regular expressions来查找字符串。 那我该用什么? 情景是:必须找到负载的比较和索引。谢谢。!有效的方法来执行各种字符串操作


例如:

String name = "application/octet-stream; name=\"2012-04-20.tar.gz\""; // get 2012-04-20.tar.gz 
    Pattern pattern = Pattern.compile("\"(.*?)\""); 
    Matcher matcher = pattern.matcher(name); 
    if (matcher.find()) { 
     System.out.println(matcher.group(1)); 
    } 

String date = " Number 4, December 2013"; 
    String year = date.substring(date.lastIndexOf(" ")+1); 
    String month = date.substring(date.indexOf(',')+2,date.indexOf(" ",date.indexOf(',')+2)); 
    date = year+getMonth(month)+"01"; 
    System.out.println(date); 

上面一样,字符串中字符串的许多其他提取。

+0

对于特定的应用程序它总是一样的格式吗?你有没有考虑过StringTokenizer? http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html – Ron

+0

不!还有其他4 5种格式。这些格式被处理数千次!不,我没考虑过字符串标记器。这会有助于提高效率吗? –

+0

它说:'StringTokenizer是一个遗留类,为了兼容性原因保留,尽管它在新代码中的使用不受欢迎。建议任何寻求此功能的人都使用String或java.util.regex包的拆分方法。' –

回答

0

既然你没有操纵字符串,可以使用字符串或StringUtils的,而不是StringBuilder的

0

所有这些操作都可以用String类来完成,请参阅下面的你应该使用的方法。从字符串

提取物串

String.substring()

获得最后的指数

String.length() -1

最后一个字符

s.charAt(s.length() - 1);

获得第n个字符的字符串

String.charAt()

比较

String.compareTo()

海峡ING包含字符串或不

String.contains()
您也可以上使用String.toLowerCase()都如有必要

+0

我已经使用了上述所有方法。我想知道我应该使用所有上述操作?还是有其他有效的方法? –

+0

这些操作的时间效率存在数学上的下限,我假设内置的String方法的操作非常接近最优。 – Ron

+0

好吧好吧谢谢 –

0

当你处理大量的String对象使用String intern功能明智地节约堆空间并消除对象创建开销。请参阅here以获取更多信息

相关问题