是否有人可以帮助转义字符串中的空格



我有一个简单的凯撒密码程序,它基于相同的参数从文本文件中获取输入。我遇到的问题是,当我使用带有空格的输入字符串时,当我的循环遍历字母表变量时,它不会考虑输入文件中的空格。我想知道的是,如果有一种方法程序不能考虑空间,如果它在输入文件中找到一个空间,它将传递到下一个字母。下面是我的代码

public static int shiftnumber = 0;
public static int EncrDecrpt = 0;
public static String plainText = "";
public static String encryptStr = "";
public static int languageInteger = 0;
public static boolean turkish = false;
public static boolean spanish = false;
public static boolean english = false;

public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
File inputFile = new File("filename.txt");
Scanner scan = new Scanner(inputFile);
while (scan.hasNext()) {
String line = scan.nextLine();
String[] words = line.split(":");
shiftnumber = Integer.parseInt(words[0]);
EncrDecrpt = Integer.parseInt(words[1]);
languageInteger = Integer.parseInt(words[2]);
plainText = words[3].toLowerCase();

System.out.println(line);
// System.out.println(secondParameter);
}
encyption(shiftnumber, EncrDecrpt, plainText, encryptStr, ALPHABET);
public static String encyption(int shiftnumber, int EncrDecrpt, String plainText, String encryptStr,
String ALPHABET) {
int encryptPos = 0;
for (int i = 0; i < plainText.length(); i++) {
// get position of each character of inputStr in ALPHABET
int pos = ALPHABET.indexOf(plainText.charAt(i));
// get encrypted char for each char of inputStr
encryptPos = (shiftnumber + pos) % 29;


char encryptChar = ALPHABET.charAt(encryptPos);
// add encrypted char to encrypted string
encryptStr += encryptChar;
}
System.out.println(encryptStr);
return encryptStr;
}

在输入文件中,我有一个移位的hello world,我得到输出lippsdasvh而不是LIPPS ASVPH

当输入字符串包含空格时,indexOf返回-1

这会导致加密循环完全跳过空格字符,从而产生不正确的输出

我建议修改加密函数

public static String encyption(int shiftnumber, int EncrDecrpt, String plainText, String encryptStr,
String ALPHABET) {
int encryptPos = 0;
for (int i = 0; i < plainText.length(); i++) {
char c = plainText.charAt(i);
if (c == ' ') {
// If the current character is a space, skip it and continue to the next one
encryptStr += " ";
continue;
}
// get position of each character of inputStr in ALPHABET
int pos = ALPHABET.indexOf(c);
// get encrypted char for each char of inputStr
encryptPos = (shiftnumber + pos) % 29;


char encryptChar = ALPHABET.charAt(encryptPos);
// add encrypted char to encrypted string
encryptStr += encryptChar;
}
System.out.println(encryptStr);
return encryptStr;
}

最新更新