Получение ошибки unicode 0x2 при анализе XML 1.0 [дубликат]

Если вы используете этот код на локальном сервере (т. е. ваш компьютер для целей разработки), он не отправит электронное письмо получателю. Что произойдет, он создаст файл .txt в папке с именем mailoutput.

В случае, если вы используете бесплатный сервисный сервис, например 000webhost или hostinger, эти поставщики услуг отключают функцию mail(), чтобы предотвратить непреднамеренное использование электронной почты, спам и т. д. Я предпочитаю вас чтобы связаться с ними, чтобы узнать, поддерживают ли они эту функцию.

Если вы уверены, что поставщик услуг поддерживает функцию mail (), вы можете проверить это руководство по PHP для дальнейшей справки, PHP mail ()

Чтобы проверить, поддерживает ли ваша служба хостинга функцию mail (), попробуйте запустить этот код (не забудьте изменить адрес электронной почты получателя)


Надеюсь, что это помогли.

73
задан Pshemo 20 March 2016 в 19:36
поделиться

5 ответов

И когда я отлаживаю это, логика попадает в предложение .replace.

Да, а затем вы отбрасываете возвращаемое значение.

Строки в Java неизменяемы - когда вы вызываете replace, он не меняет содержимое строки existing - он возвращает новую строку new с изменениями. Итак, вы хотите:

sentence = sentence.replace("and", " ");

Это относится к всем методам в String (substring, toLowerCase и т. Д.). Нет из них изменяют содержимое строки.

Обратите внимание, что вам действительно не нужно делать это в состоянии - в конце концов, если предложение t содержат "and", это не вредно для выполнения замены:

String sentence = "Define, Measure, Analyze, Design and Verify";
sentence = sentence.replace("and", " ");
161
ответ дан Jon Skeet 22 August 2018 в 07:35
поделиться
  • 1
    Я должен позвонить вам, отвечая на вопрос, вместо того, чтобы голосовать. Эта проблема была задана & amp; ответил так много раз раньше - в чем дело, Джон? – Matt Ball 4 October 2012 в 20:49
  • 2
    @MattBall Пока согласен, что вопрос задан несколько раз, я думаю, что это лучший ответ, IHMO – MadProgrammer 4 October 2012 в 20:58
  • 3
    @MattBall: Как это часто бывает, я нахожу, что быстрее дать хороший, полный ответ, чем найти дубликат, который также имеет хороший ответ. Я считаю (несколько эгоистично, по общему признанию), что мой ответ здесь лучше, чем принятый в дубликате, который вы нашли, что даже не делает технического смысла. («Вам нужно, чтобы ваша строка фактически соответствовала изменениям, которые вы вносите в строку» - что?) Кроме того, я хотел бы указать на то, что вам не нужно сначала проверять сдерживание. – Jon Skeet 4 October 2012 в 21:02
  • 4
    Это должно быть принято как правильный ответ! – Skynet 13 December 2013 в 06:18
  • 5
    Услышав это, я почувствовал, что это лучший ответ. – yams 9 February 2015 в 19:23

Вы должны повторно назначить результат замены, например:

 sentence = sentence.replace("and", " ");

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

7
ответ дан Óscar López 22 August 2018 в 07:35
поделиться
  • 1
    Строки должны быть неизменными, но есть ошибки с String lib, которые позволяют вам изменять исходную строку. – yams 4 October 2012 в 21:04
  • 2
    @MarkBasler: О, какие ошибки вы говорите, точно? И если вы знаете, что строки неизменяемы, непонятно, почему вы ожидали, что ваш код будет работать вообще ... – Jon Skeet 4 October 2012 в 23:49

Строки являются неизменяемыми , что означает, что их содержимое не может измениться. Когда вы вызываете replace(this,that), вы получаете совершенно новую строку. Если вы хотите сохранить эту новую копию, вам нужно назначить ее переменной. Вы можете перезаписать старую ссылку (a la sentence = sentence.replace(this,that) или новую ссылку, как показано ниже:

public class Test{

    public static void main(String[] args) {

        String sentence = "Define, Measure, Analyze, Design and Verify";

        String replaced = sentence.replace("and", "");
        System.out.println(replaced);

    }
}

В качестве примечания обратите внимание, что я удалил проверку contains(), так как это ненужный вызов здесь. Если он не содержит его, заменитель просто не сможет выполнить какие-либо замены. Вам нужно только, чтобы он содержал метод, если то, что вы заменяете, отличается от фактического условия, которое вы проверяете.

68
ответ дан corsiKa 22 August 2018 в 07:35
поделиться
  • 1
    Текст этого ответа подразумевает, что это вызов contains(), вызывающий проблему, - это не так. Это был ненужный звонок, но на самом деле это не вызвало никаких проблем. Проблема заключалась в игнорировании возвращаемого значения replace, которое вообще не объясняется в ответе. – Jon Skeet 4 October 2012 в 23:50
  • 2
    @ Mr.Jon Skeet Мне очень жаль, если текст в ответе подразумевал другой путь ... но когда я сказал, что это не требуется, я имел в виду, что это не нужно ... хорошо, я включу это в ответ это более очевидно ..... – Kumar Vivek Mitra 5 October 2012 в 07:08
  • 3
    было бы лучше, если вы sentence.replace(" and", ","); – Khaled.K 25 February 2014 в 09:03
  • 4
    @JonSkeet и другие - я добавил абзац, который на самом деле объясняет, что происходит, и переместил вводящий в заблуждение текст до конца, так как он довольно лишний для реальной проблемы. – corsiKa 17 October 2014 в 20:58
  • 5
    @corsiKa: Я бы не сделал это как редактирование существующего ответа кем-то другим, если честно. Это существенно меняет смысл ответа. – Jon Skeet 18 October 2014 в 08:10

Вы ничего не делаете с возвращаемым значением replace. Вам нужно назначить результат метода, который является новым String:

sentence = sentence.replace("and", " ");

A String неизменен в java. Такие методы, как replace, возвращают новый String.

Тест contains не нужен: replace будет просто no-op, если не являются экземплярами текст для замены.

8
ответ дан pb2q 22 August 2018 в 07:35
поделиться
  • 1
    Моя логика содержания необходима, потому что есть случаи, когда я не хочу ее заменять. Логика не совсем такая, я просто использовал это в качестве примера. – yams 4 October 2012 в 20:58
  • 2
    @MarkBasler: Ваша логика содержания не нужна для образца, который вы дали, поэтому вы не должны его включать. Хорошие вопросы должны содержать только то, что им нужно, чтобы показать проблему - включив код, который был бессмыслен в ситуации, которую вы предоставили, вы добавили отвлечение внимания на вопрос. – Jon Skeet 4 October 2012 в 21:04
  • 3
    Я был обеспокоен тем, что я был связан с заменой. – yams 4 October 2012 в 23:19
  • 4
    Кстати, вы отмечаете это как дубликат и отвечаете на него. Оставайтесь классными. – yams 28 July 2014 в 21:41
  • 5
    Привет @MarkBasler: Я пытался помочь. Я не вижу конфликта с этими двумя действиями: ваша проблема была чрезвычайно распространенной, которая постоянно возникала в запросе: строки java неизменяемы. Когда я помещаю вопрос как дубликат, я пытаюсь улучшить качество вопросов и ответов здесь, но в то же время, оставляя ответ на ваш вопрос, я надеюсь, что вы предоставите вам более непосредственную помощь, характерную для вашего примера , Вы можете найти этот вопрос по мета полезным. – pb2q 29 July 2014 в 21:21
package com.tulu.ds;

public class EmailSecurity {
    public static void main(String[] args) {
        System.out.println(returnSecuredEmailID("sample717@gmail.com"));
    }
    private static String returnSecuredEmailID(String email){
        String str=email.substring(1, email.lastIndexOf("@")-1);
        return email.replaceAll(email.substring(1, email.lastIndexOf("@")-1),replacewith(str.length(),"*"));
    }
    private static String replacewith(int length,String replace) {
        String finalStr="";
        for(int i=0;i<length;i++){
            finalStr+=replace;
        }
        return finalStr;
    }   
}
0
ответ дан Tulu 22 August 2018 в 07:35
поделиться
  • 1
    Пожалуйста, не пишите только ответы на код, а не объясняйте, как ваш код решает проблему OP. Из обзора – abccd 5 May 2018 в 02:34
Другие вопросы по тегам:

Похожие вопросы: