Java取代ascii char

时间:2016-09-30 21:26:50

标签: java

我有一个文件(prueba.txt),我想将0x14替换ascii字符0xE1(á),0x15替换0xE9(é),0x16替换0xF3(ó)...字符串可以{{ 1}}但它是一个字符。

String.replace()

我猜这段代码有很大改进,但是......

问候。

3 个答案:

答案 0 :(得分:2)

首先阅读文本文件,然后替换字符。

<强>读

文本文件具有一些特定的字符集和编码。您必须确切地知道它是什么,或者肯定是系统默认的ANSI字符集和编码。 ANSI不是一种特定的编码。

但是,既然你说ANSI,你可能意味着系统默认。您使用的Scanner构造函数是Java的默认构造函数。您可以合理地假设Java的默认值与系统默认值正确匹配。

替换字符

Java的StringcharCharacter数据类型以及分析的Java源文件中的所有“字符”都是UTF-16代码单元,其中一个或两个编码Unicode代码点。未转义的文字字符串和字符将在源文件的编码中。 (当然,应该是UTF-8。)无论如何,如果你输入它,看到它,保存它并用相同的编码编译它,字符将是你认为它们。

因此,一旦您在字符串中包含文本,就可以替换,替换,替换,如下所示:

frase
    .replace('á', '►')
    .replace('é', '☼')
    .replace('ñ', '◄')

frase
    .replace('\u00E1', '\u25B6')
    …

BTW-0x14,0x15,0x16是{,{3}}字符集的一个编码中►,☼,◄的编码。

如果您更愿意遍历String的元素,则可以通过每个UTF-16代码单元执行此操作,例如使用charAt。如果所有文本都是UTF-16只使用一个代码单元编码的字符,那么这将最有效。鉴于您的文件编码是欧洲语言的ANSI字符集之一,可能就是这种情况。或者,您可以使用代码点感知技术进行迭代,如OEM437上的Java文档中所示。

答案 1 :(得分:0)

它更好char,因为你可以这样做:

yourStringToReplace.replace(0xe1);

char是一个integer,被威胁为一个数字的角色(简单来说)

答案 2 :(得分:0)

这将替换字符并创建一个新文件&#34; nueva_prueba.txt&#34;使用更改的文本

public class Reemplazar {

    public static void main(String[] args) throws IOException
    {
        BufferedWriter out;

        File f = new File("nueva_prueba.txt");
        f.createNewFile();

        out = new BufferedWriter(new FileWriter(f));


        Scanner archivo = new Scanner(new File("prueba.txt"));

        while(archivo.hasNextLine()) {
            String frase = archivo.nextLine();

            for (int i = 0; i < frase.length(); i++) {
                char current = frase.charAt(i);

                switch(current)
                {

                    case 0xe1:
                        System.out.println("contiene la á: '"+frase+"'");
                        frase = frase.replace((char) 0xe1, (char) 0x14);
                        System.out.println("nova frase: "+frase); 
                        break;

                    case 0xe9:
                        System.out.println("contiene la é: '"+frase+"'");
                        frase = frase.replace((char) 0xe9, (char) 0x15);
                        System.out.println("nova frase: "+frase); 
                        break;

                    case 0xf3:
                        System.out.println("contiene la ó: '"+frase+"'");
                        frase = frase.replace((char) 0xf3, (char) 0x16);
                        System.out.println("nova frase: "+frase); 
                        break;

                        //... outros / others

                    default:
                        break;
                }


            }

            try{

                out.write(frase);
                out.newLine();

            }catch(IOException e){
                e.printStackTrace();
            }
        }
        archivo.close();
        out.close();

    }
}

希望这有帮助!