我使用Java创建了shell会话。使用K我正在输入命令并使用中的' ' ,' 频道'我正在获取shell输出。我在获取shell输出时遇到问题。如下所示,输出包含几个特殊字符的ascii值。 请告诉我如何格式化字符串Obtained。
我已经获得了样本输出。
获得的输出:
1.68(B [m [39; 49m [K任务:(B [m [39; 49m(B [m 274(B [m [39; 49 mtotal,(B [m [39; 49m(B [m] 1(B [m [39; 49mrunning ..
我正在使用的代码在这里:
public static void printOutput(InputStream in,Channel channel) {
String output= "";
try {
byte[] tmp=new byte[1024];
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0){break;}
output += new String(tmp, 0, i);
}
System.out.println("Inside print output");
System.out.println(output);
} catch (Exception e) {
System.out.println(e+"\n");
e.printStackTrace();
}
OutputStream os = channel.getOutputStream();
in = channel.getInputStream();
channel.connect();
os.write((command +"\n").getBytes());
os.flush();
printOutput(in,channel);
答案 0 :(得分:0)
将所有特殊字符替换为空字符串
output.replaceAll("[^\\w]", "");
下面是结果。
如果不是你的,你可以更新正则表达式,选择你想要替换的空格,例如:[([;,.: ]
168Bm3949mKTasksBm3949mBm274Bm3949mtotalBm3949mBm1Bm3949mrunning