Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包含双引号和变量的字符串_Java_String_Escaping - Fatal编程技术网

Java 包含双引号和变量的字符串

Java 包含双引号和变量的字符串,java,string,escaping,Java,String,Escaping,我正在尝试在Win7机器上使用sendEmail发送电子邮件。它工作正常,但我决定将主题和消息作为参数发送到sendEmail方法 由于主题和正文包含破折号字符,sendEmail无法正确响应,因为它也使用了破折号字符。我需要做的是在subjectText变量和messageText变量周围添加双引号 stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u " + subjectText

我正在尝试在Win7机器上使用sendEmail发送电子邮件。它工作正常,但我决定将主题和消息作为参数发送到sendEmail方法

由于主题和正文包含破折号字符,sendEmail无法正确响应,因为它也使用了破折号字符。我需要做的是在subjectText变量和messageText变量周围添加双引号

    stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u " +
        subjectText + " -m " + messageText + " -s smtp.gmail.com:25");
我试过这个:

stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u " + \" +
       subjectText + "\"+ -m "\"+ messageText + "\" -s smtp.gmail.com:25");
但它不起作用

输出需要如下所示:

"sendemail -t tome@isp.com -f admin@xyz.com -u "Subject with a - char" -m "message body with a - char" -s smtp.gmail.com:25"
cmd将显示在我的Eclipse控制台中


感谢您的帮助……

您的转义双引号必须位于字符串文字本身的内部。试一试

stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u \"" +
   subjectText + "\" -m \"" + messageText + "\" -s smtp.gmail.com:25");

转义的双引号必须位于字符串文字本身的内部。试一试

stdin.println("sendemail -t " + emailAddresses + " -f admin@xyz.com -u \"" +
   subjectText + "\" -m \"" + messageText + "\" -s smtp.gmail.com:25");

正如其他人所说,转义引号必须在文本中

作为思考的额外食物;使用
String.format()
或使用
StringBuilder
创建包含变量的字符串时,有时会更简洁或更不复杂

例如,使用
String.format

String str = String.format(
    "sendemail -t %s -f admin@xyz.com -u \"%s\" -m \"%s\" -s smtp.gmail.com:25",    
     emailAddress, subjectText, messageText);

正如其他人所说,转义引号必须在文本中

作为思考的额外食物;使用
String.format()
或使用
StringBuilder
创建包含变量的字符串时,有时会更简洁或更不复杂

例如,使用
String.format

String str = String.format(
    "sendemail -t %s -f admin@xyz.com -u \"%s\" -m \"%s\" -s smtp.gmail.com:25",    
     emailAddress, subjectText, messageText);