【问题标题】:How to get single occurrences of only certain characters?如何仅获得某些字符的单次出现?
【发布时间】:2018-02-11 17:03:24
【问题描述】:

我有以下代码来选择找到任何两个相邻的相同字母并删除一个。

例如:singleOccurrence("1//2/2018")

我的代码:

public static StringBuilder singleOccurrence(String s) {
    StringBuilder sb = new StringBuilder();
    if (s.length() > 0) {
        char prev = s.charAt(0);
        sb.append(prev);
        for (int i = 1; i < s.length(); ++i) {
            char cur = s.charAt(i);
            if (cur != prev) {
                sb.append(cur);
                prev = cur;
            }
        }
    }
    return sb;
}

这将返回:“1/2/2018”

但是,如果我输入:singleOccurrence("11//2/2018") 它将返回:“1/2/2018”

请注意,我的方法会删除所有字符的重复出现。

我的问题是如何让我的方法只做它应该对字符 "/", "-", ":" 做的事情

提前致谢:)

【问题讨论】:

    标签: android string char character stringbuilder


    【解决方案1】:

    将此添加到您的 if 语句中。这将检查 prev 和 cur 字符是否不是 '-' '/' 或 ':' 附加到结果。

    if (cur != prev || (cur != '-' || cur != '/' || cur != ':')) 
    {
       sb.append(cur);
       prev = cur;
     }
    

    【讨论】:

    • 非常感谢您的帮助,但不幸的是,这满足了我的需求,但它仍然允许出现“/”、“-”、“:”的两次出现。
    • 对不起,应该是 if (cur != prev || (cur != '-' && cur != '/' && cur != ':'))
    【解决方案2】:
    public void singleOccurrence(String string) 
    {
        char[] chars = string.toCharArray();
        List<Character> characters = new ArrayList<>();
        char temp = 0;
        for (char c : chars) {
            if (temp != c || (c != '/' && c != '_' && c != ':')) {
                characters.add(c);
            }
            temp = c;
        }
    
        StringBuilder sb = new StringBuilder();
        for (Character character : characters) {
            sb.append(character);
        }
    
        Log.e(TAG, sb.toString());
    }
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 2016-04-15
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 2023-03-18
      相关资源
      最近更新 更多