java - 删除字符串中大于 10 的重复数字

标签 java string char duplicates

我编写了一个程序,可以在按下按钮时删除字符串中的重复字符。例如,如果字符串是“23332”,则输出是“23”。现在我的问题是,这实际上不适用于 10 以上的数字。如果字符串是“10”,程序会将其视为 1 和 0,而不是 10。是否可以以某种方式标记该数字,以便程序知道它是10 而不是 1 和 0?提前致谢。这是我的代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class test extends JFrame implements ActionListener {

    private JPanel panel;
    private JLabel label;
    private JButton ok;
    private String str;

    public test() {

        panel = new JPanel();

        ok = new JButton("OK");
        ok.addActionListener(this);

        str = "10, 11, 12, 13, 10";
        label = new JLabel(str);

        panel.add(ok);
        panel.add(label);

        add(panel);

        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        }

    public static void main(String[] args) {
        new test();        
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {

        String temp="";
        HashMap<Integer,Character> tc = new HashMap<Integer,Character>();
        char [] charArray = str.toCharArray();
        for (Character c : charArray)
        {
            if (!tc.containsValue(c))
                {
                    temp=temp + c.toString() + ", ";
                    tc.put(c.hashCode(),c);
                 }
        }
        label.setText(temp);
    }
}

编辑:

    String temp = "";
    HashMap<Integer,Character> tc = new HashMap<Integer,Character>();
    String[] strArray = str.split(",");

    for(String string : strArray) {
        char [] charArray = string.toCharArray();
            for (Character c : charArray)
            {
                if (!tc.containsValue(c))
                    {
                        temp=temp + c.toString() + ", ";
                        tc.put(c.hashCode(),c);
                     }
            }
        }
            label.setText(temp);

最佳答案

假设您使用的是分隔符,例如 , ,您可以使用String.split()方法,它为您提供一个字符串数组并循环所有这些字符串,这是您需要的代码:

String[] strArray = str.split(",");
for(String string : strArray) {
char [] charArray = string.toCharArray();
    for (Character c : charArray)
    {
        if (!tc.containsValue(c))
            {
                temp=temp + c.toString() + ", ";
                tc.put(c.hashCode(),c);
             }
    }
}

编辑:

如果您需要检查大于 10 的数字的重复项,则需要使用 Integer.parseIn()解析字符串值并将您的 map 从 HashMap<Integer,Character> 更改为至HashMap<Integer,String> ,这是代码:

String[] strArray = str.split(",");
for(String string : strArray) {
   if (!tc.containsValue(string)) {
          temp=temp + string + ", ";
          tc.put(Integer.parseIn(string), string);
   }
}

关于java - 删除字符串中大于 10 的重复数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30401870/

相关文章:

java - String.concat() 不进行连接

c - 使用 strcpy() 的结构的 char 数组成员出现段错误

c - 输入字符串并以随机顺序打印它们

java - 使用 runClasses(),如果测试类是公共(public)的,JUnit 测试在超时后不会关闭

java - Java 参数可以由另一个对象中包含的类进行类型绑定(bind)吗?

java - Hibernate刷新不会为陈旧对象抛出StalestateException(除了第一次刷新调用)

java - 在 IntelliJ IDEA 中导航到声明、类型声明、实现之间有什么区别?

c - 当我想在第一个字母处替换字符串时,为什么 memmove 的行为会有所不同?

c - 用存储在数组中的字符替换字符串中的某些字符会插入垃圾

c - scanf 一次获取多个值