Заменить знак $ в строке - PullRequest
       1

Заменить знак $ в строке

2 голосов
/ 09 ноября 2010

Я использовал следующую строку для удаления всех знаков $ и пробелов в данных «ДАННЫЕ»:

String temp_data = DATA.replaceAll("$", "").replaceAll(" ", "");

Но он не удалит знаки $, только пробелы.У кого-нибудь есть идеи, почему?

Спасибо, Биньямин

Ответы [ 3 ]

9 голосов
/ 09 ноября 2010

Первый параметр replaceAll принимает регулярное выражение, а механизм регулярных выражений обрабатывает $ как специальный символ, обозначающий конец строки. Побег это с \ как это:

String temp_data = DATA.replaceAll("\\$", "").replaceAll(" ", "");

Вот пример использования replaceAll и replace:

import junit.framework.TestCase;

public class ReplaceAllTest extends TestCase {

    private String s = "asdf$zxcv";

    public void testReplaceAll() {
        String newString = s.replaceAll("\\$", "X");
        System.out.println(newString);
        assertEquals("asdfXzxcv", newString);
    }

    public void testReplace() {
        String newString =s.replace("$", "");
        System.out.println(newString);
        assertEquals("asdfzxcv", newString);
    }
}
4 голосов
/ 09 ноября 2010

replaceAll принимает регулярное выражение - и "$" имеет особое значение в регулярных выражениях.

Попробуйте просто replace вместо:

String temp_data = DATA.replace("$", "").replace(" ", "");
3 голосов
/ 09 ноября 2010

String.replaceAll использует регулярное выражение для сопоставления символов, которые должны быть заменены. Однако в регулярных выражениях $ - это специальный символ, обозначающий конец строки, поэтому он не распознается как сам символ.

Вы можете либо экранировать символ $, либо просто использовать метод String.replace, который работает с простой строкой:

String temp_data = DATA.replace( "$", "" ).replace( " ", "" );

// or
String temp_data = DATA.replaceAll( "\\$", "" ).replaceAll( " ", "" );

// or even
String temp_data = DATA.replaceAll( "\\$| ", "" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...