Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Аленка) )) Ученик (67), на голосовании 1 год назад
В форме я ввожу символ input, после этого в строке должна произвестись замена этого символа на #. Что не так?
 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);
}

Дополнен 1 год назад
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;

}
}
Голосование за лучший ответ
Era play Гуру (2767) 1 год назад
Воспользуйтесь регулярными выражениями
Аленка) ))Ученик (67) 1 год назад
Что это?
Андрей Панарин Искусственный Интеллект (249340) 1 год назад
Используйте компонент JPasswordField.
У него есть метод setEchoChar, в который можно аргументом подать решетку '#'.
После этого все символы в таком поле будут заменяться решеткой.
Замена будет чисто визуальной: реальный текст поле запомнит как есть.
Аленка) ))Ученик (67) 1 год назад
А что делать с введенным символом?
class replace{
public static String replace(String inputString){
int stringLength = inputString.length();
String result = "";
//char oldChar = input;
for (int i = 0; i < stringLength; i++){
result = inputString.charAt(i) + result;
result = replace(char input, '#');
}
return result;


}
}

input вводится в форме - JTextField input = new JTextField("", 5);
JLabel label = new JLabel("Input");
Как его закинуть в replace после этого?
Аленка) )) Ученик (67) Методом пользоваться так? class replace{ public static String replace(String inputString){ int stringLength = inputString.length(); String result = ""; for (int i = 0; i < stringLength; i++){ result = inputString.charAt(i) + result; result = replace(char input, setEchoChar('#')); } return result; } }
Похожие вопросы