c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量
生活随笔
收集整理的這篇文章主要介紹了
c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
遇到這樣的問題,常規的思路估計就是遍歷String,然后逐個對比。下面先看循環遍歷
循環遍歷
private static int getNum(String originStr, String targetStr){ int result = 0; for (int i = 0; i < originStr.length(); i++) { if (targetStr.equals(originStr.substring(i, i + 1))){ result ++; } } return result;}這樣雖然直觀,但感覺效率不行。繼續研究String中的方法,很快我們想到了indexOf方法,該方法可以獲取指定字符串在String對象的位置。
indexOf方法
private static int getNum(String originStr, String targetStr){ int res = 0; int i = originStr.indexOf(targetStr); while (i != -1){ i = originStr.indexOf(targetStr,i+1); res++; } return res;}這樣的方法看上去,好像不太直觀,此時想到split方法,該方法可以根據字符串切分原字符串,似乎可以通過切割后的數組數量達到計算效果
split方法
private static int getNum(String originStr, String targetStr){ int start = originStr.startsWith(targetStr) ? 1 : 0; int end = originStr.endsWith(targetStr) ? 1 : 0; String[] split = originStr.split(targetStr); return split.length - 1 + start + end;}split方法使用需要注意邊界問題,如果不注意,容易漏計算。除了這些還有其他方案嗎?
replaceAll方法
private static int getNum(String originStr, String targetStr){ String result = originStr.replaceAll(targetStr, ""); int i = originStr.length() - result.length(); return i;}通過replaceAll方法需要注意targetStr中是否有需要轉義的字符串。
測試各個方法的效率
將每個方法執行10000次,測得每個方法耗時如下
遍歷:10msreplaceAll:35mssplit:11msindexOf:2ms因此建議使用indexOf,大家還有沒有更高級的方法,歡迎留言。
總結
以上是生活随笔為你收集整理的c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言单链表_C语言笔试题—单链表逆序
- 下一篇: d3 svg path添加文本_10 倍