PHP用str_replace删除元音 SOAP接口Java客户端仅返回单个单词问题
问题原因
- 核心诱因在Java客户端的输入读取逻辑:
Scanner类的next()方法默认以空白字符(空格、换行符、制表符等)作为分隔符,读取到第一个空白符就会终止取值。用户输入hello world时,sc.next()实际只返回了第一个单词hello,传给SOAP接口的参数仅有hello,PHP处理后删除元音e、o,自然只返回hll。 - 附加注意点:当前PHP代码的元音替换数组中包含了空格字符
" ",即使传入完整字符串,空格也会被删除,最终返回结果会把所有单词拼接在一起,若业务需要保留空格,需删除数组中的空格项。
解决方法
- 第一步:修改Java客户端的输入读取代码,将
sc.next()替换为sc.nextLine(),该方法会读取整行输入,包含空格,直到遇到换行符为止,可拿到用户输入的完整内容。 - 第二步(可选,按需调整):如果业务需要保留输入中的空格,修改PHP代码,删除
$vocales数组末尾的" "元素。
修改后代码示例
Java客户端代码
Consonante servidor = new Consonante(); ConsonantePortType puerto = servidor.getConsonantePort(); Scanner sc = new Scanner(System.in); System.out.println("ingresa una palabra"); // 替换next为nextLine读取整行输入 String a = sc.nextLine(); String respuesta = puerto.devolverConsonante(a); System.out.println(respuesta);
保留空格的PHP代码调整
// 移除数组末尾的空格元素即可 $vocales = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U"); $resultado = str_replace($vocales, "", $mensaje); return $resultado;
内容的提问来源于stack exchange,提问作者erik tapia
相关产品推荐
相关产品推荐

