楼主您好,多次请教您,问题都能得到完美解决,敬佩并感谢!我遇到了一个新问题,在Tasker里面,使用Java脚本处理字符串,当字符串当中没有中文字符时,结果正常,当出现中文的时候,处理结果异常,没有输出。具体情况如下:我使用Java Function,扫描周边WIFI,目的是切换到最强信号的WiFi,扫描结果是这个:
-------------------扫描结果------------------------------------------
SSID: AlexLee-Fast,
BSSID: xxxxxxxxxxx
capabilities: [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS],
level: -80,
frequency: 2432,
timestamp: 3711111134,
distance: ?(cm),
distanceSd: ?(cm),
passpoint: no,
ChannelBandwidth: 1,
centerFreq0: 2412,
centerFreq1: 0,
80211mcResponder: is not supported,
wpsState :configured,
wpsDeviceName :Wireless Router TL-WR740N,
SSID: 徐州_5G,
BSSID: xxxxxxxxxx
capabilities: [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS],
level: -73,
frequency: 5180,
timestamp: 3711111080,
distance: ?(cm),
distanceSd: ?(cm),
passpoint: no,
ChannelBandwidth: 1,
centerFreq0: 5200,
centerFreq1: 0,
80211mcResponder: is not supported,
wpsState :null,
wpsDeviceName :null,
SSID: Tenda_4_203,
BSSID: xxxxxxxxxxxx
capabilities: [WPA-PSK-CCMP][ESS],
level: -59,
frequency: 2432,
timestamp: 3711111149,
distance: ?(cm),
distanceSd: ?(cm),
passpoint: no,
ChannelBandwidth: 1,
centerFreq0: 2412,
centerFreq1: 0,
80211mcResponder: is not supported,
wpsState :null,
wpsDeviceName :null,
SSID: www,
BSSID: xxxxxxxxxxxxx,
capabilities: [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS],
level: -70,
frequency: 2412,
timestamp: 3711111103,
distance: ?(cm),
distanceSd: ?(cm),
passpoint: no,
ChannelBandwidth: 1,
centerFreq0: 2432,
centerFreq1: 0,
80211mcResponder: is not supported,
wpsState :null,
wpsDeviceName :null,
SSID: 徐州,
BSSID: xxxxxxxxxxxxxxx
capabilities: [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS],
level: -54,
frequency: 2427,
timestamp: 3711111164,
distance: ?(cm),
distanceSd: ?(cm),
passpoint: no,
ChannelBandwidth: 0,
centerFreq0: 0,
centerFreq1: 0,
80211mcResponder: is not supported,
wpsState :null,
wpsDeviceName :null,
SSID: Alex-Tplink,
BSSID: xxxxxxxxxxxxxxxxxxxxxxx
capabilities: [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP-preauth][ESS],
level: -58,
frequency: 2472,
timestamp: 3711111224,
distance: ?(cm),
distanceSd: ?(cm),
passpoint: no,
ChannelBandwidth: 0,
centerFreq0: 0,
centerFreq1: 0,
80211mcResponder: is not supported,
wpsState :null,
wpsDeviceName :null,
SSID: Tenda_4_203_2,
BSSID: xxxxxxxxxxxxxxxxxx
capabilities: [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS],
level: -70,
frequency: 2442,
timestamp: 3711111178,
distance: ?(cm),
distanceSd: ?(cm),
passpoint: no,
status: 16,
ChannelBandwidth: 1,
centerFreq0: 2462,
centerFreq1: 0,
80211mcResponder: is not supported,
wpsState :null,
wpsDeviceName :null,
---------------以上是扫描结果--------------------------
使用JavaScriptlet,提取几个目标WIFI信号强度,代码如下:
-----------JavaScriptlet 代码------------------
var a=String(global("Gaaa"));
var b=String(a.replace(/SSID: ([\w_-]+?), BSSID: [\s\S]+?level: -(\d{2}), [\s\S]+?(?=SSID|$)/g,'"$1":"$2",'));
var b=b.replace(/\r\n/g,"");
var b=b.replace(/\n/g,"");
var b=b.replace(/\-/g,"");
var c=eval("({"+b+"})");
setGlobal("%Myfast",-c.AlexLeeFast);
setGlobal("%MyTenda",-c.Tenda_4_203);
setGlobal("%MyTenda2",-c.Tenda_4_203_2);
setGlobal("%MyTplink",-c.AlexTplink)
-------------------------------------------------------------------
在扫描结果%Gaaa里面不含有徐州的那个信号时,代码可以提出正常的Wifi信号强度值,把“徐州”改成“Xuzhou”也能正常处理。 但是,带有中文字符的时候,没有提取到任何数值。那么请问,怎么解决字符串中文字符带来的干扰?谢谢。