我有一个字符串:
www.domain.com/I-Need-This-Part
我需要检测最常用的分隔符是什么/在这种情况下是/ - 。分隔符可能会根据网址而改变。
一旦我解决了这个问题,我将使用.split并传入最常用的分隔符来计算部分。
对此的任何帮助都将非常感激。
提前谢谢。
答案 0 :(得分:2)
定义分隔符,然后对它们进行计数并对它们进行排序
定义它们取决于你。
这里有一个链接:Java: How do I count the number of occurrences of a char in a String?
您可以使用TreeMap进行动态排序,例如使用适当的比较器和内容类型,例如:分隔符 - nrOfOccurrences对。 (PriorityQueue也可以做到这一点)
答案 1 :(得分:1)
首先想到的是:
如果你只有很少的分隔符,你应该使用zeller的答案。如果你有很多分隔符,这个算法应该更有效。
答案 2 :(得分:0)
计算您认为是分隔符候选者的字符应该是一项非常简单的任务。例如,您可以使用indexOf
。
final String url = "www.domain.com/I-Need-This-Part";
final int neededStart = url.indexOf('/')+1;
char mostFrequent = '\u0000';
int highestFreq = 0;
for (char delim : new char[] {'%', '-', '$', '+'}) {
int cnt = 0;
for (int i = url.indexOf(delim, neededStart); i != -1;
i = url.indexOf(delim, i+1), cnt++);
if (cnt > highestFreq) { highestFreq = cnt; mostFrequent = delim; }
}
System.out.println(mostFrequent);
答案 3 :(得分:0)
假设您有一组特定的可能分隔符,您可以使用Apache Commons库并使用它们的
StringUtils.countMatches
计算出现次数的方法。
另一种方式(再次,如果你已经有一个分隔符列表),你可以通过创建一个Map(key = delimiter,value = count)迭代一次String,当你遇到分隔符时,把它放在地图中,如果已存在,则递增计数。从那里,您可以确定哪个条目具有最高计数。