Top.Mail.Ru
Ответы

Как заменять символы в строке на # в java?

В форме я ввожу символ input, после этого в строке должна произвестись замена этого символа на #. Что не так?

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
 import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.*; 
import javax.swing.JOptionPane; 
import java.awt.*; 
import javax.swing.*; 
import javax.swing.Box; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
 
public class TestFrame extends JFrame { 
 
	public TestFrame() { 
		super("Тестовое окно"); 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 
		JPanel panel = new JPanel(); 
		panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
		 
		panel.add(Box.createVerticalGlue()); 
		/* 
		String name;                       
		name = JOptionPane.showInputDialog("Vvedite bukvy"); 
		*/ 
		JTextField input = new JTextField("", 5); 
		JLabel label = new JLabel("Input"); 
		 
 
		final JLabel label0 = new JLabel("Выбранный файл"); 
		label.setAlignmentX(CENTER_ALIGNMENT); 
		panel.add(label); 
		JButton showDialogButton = new JButton("Text Button"); 
		JLabel jb = new JLabel("text1"); 
		panel.add(jb); 
		JLabel jbb = new JLabel("text2"); 
		panel.add(jbb); 
 
		panel.add(Box.createRigidArea(new Dimension(10, 10))); 
		panel.setLayout(new GridLayout(2, 2, 2, 2)); 
		panel.add(input); 
 
		JButton button = new JButton("Показать JFileChooser"); 
		button.setAlignmentX(CENTER_ALIGNMENT); 
 
		button.addActionListener(new ActionListener() { 
			public void actionPerformed(ActionEvent e) { 
				JFileChooser fileopen = new JFileChooser();				 
				int ret = fileopen.showDialog(null, "Открыть файл");				 
				if (ret == JFileChooser.APPROVE_OPTION) { 
					File file = fileopen.getSelectedFile(); 
					label.setText(file.getName()); 
					 
	 
                    // Чтение содержимого файла  
                    StringBuilder content = new StringBuilder();  
                    try (BufferedReader br = new BufferedReader(new FileReader(file))) {  
                        String line;  
                        while ((line = br.readLine()) != null) {  
                              content.append(line).append('\n');  
                        }   
                    } catch (IOException ex) {  
                        ex.printStackTrace();  
                    }  
  
                   // Преобразование текста с помощью функции toUpper  
                   //String modifiedContent = toUpper.toUpper(content.toString());  
				   //String modifiedContent = replace.replace(content.toString());  
				   String modifiedContent = reverse.reverse(content.toString());  
				   jb.setText(modifiedContent); 
				   jbb.setText(content.toString()); 
				 
  
                   // Сохранение обработанного текста обратно в файл  
                   try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {  
                       bw.write(modifiedContent);  
                   } catch (IOException ex) {  
                       ex.printStackTrace();  
                   }  
               }  
           } 
        });	 
 
		panel.add(button); 
		panel.add(Box.createVerticalGlue()); 
		getContentPane().add(panel); 
 
		setPreferredSize(new Dimension(400, 400)); 
		pack(); 
		setLocationRelativeTo(null); 
		setVisible(true); 
	} 
 
	 
Дополнен

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
new TestFrame();
}
});
}
}

class toUpper{
public static String toUpper(String input) {
String [] tmpArr = input.split(" ");
String result = "";
for (int i = 0; i < tmpArr.length; i++){
if(tmpArr[i].length() > 1){
char oldFirst = tmpArr[i].charAt(0);
result += tmpArr[i].substring(0,1).toUpperCase() + tmpArr[i].substring(1,tmpArr[i].length()) + " ";
}
}
return result;
}
}

class reverse{
public static String reverse(String inputString){
int stringLength = inputString.length();
String result = "";
for (int i = 0; i < stringLength; i++){
result = inputString.charAt(i) + result;
}
return result;
}
}

class replace{
public static String replace(String inputString){
int stringLength = inputString.length();
String result = "";
char oldChar = name;
for (int i = 0; i < stringLength; i++){
result = replace(oldChar, #);
}
return result;

}
}

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект

Используйте компонент JPasswordField.
У него есть метод setEchoChar, в который можно аргументом подать решетку '#'.
После этого все символы в таком поле будут заменяться решеткой.
Замена будет чисто визуальной: реальный текст поле запомнит как есть.

Аватар пользователя
Гуру

Воспользуйтесь регулярными выражениями