我想访问一个数字的前两位数字,并且我尝试使用substring,substr和slice,但它们都不起作用。抛出错误,指出未定义子字符串。
render() {
let trial123 = this.props.buildInfo["abc.version"];
var str = trial123.toString();
var strFirstThree = str.substring(0,3);
console.log(strFirstThree);
}
我已经尝试了上面的代码
(以上代码)的输出 trial123 = 19.0.0.1
我只需要19.0
我该如何实现?
答案 0 :(得分:2)
我将其按点分隔,然后采用前两个元素:
const trial = "19.0.0.1"
console.log(trial.split(".").slice(0, 2).join("."))
// 19.0
答案 1 :(得分:0)
您可以先split
,然后再join
:
const [ first, second ] = trial123.split('.');
const result = [ first, second ].join('.');
答案 2 :(得分:0)
我添加了该工作的代码段:(解释之后,逐行显示)。
function getFakePropValue(){
return Math.round(Math.random()) == 0 ? "19.0.0.1" : null;
}
let trial123 = getFakePropValue() || "";
//var str = trial123.toString();
// is the toString() really necessary? aren't you passing it along as a String already?
var strFirstThree = trial123.split('.');
//var strFirstThree = str.substring(0,3);
//I wouldn't use substring , what if the address 191.0.0.1 ?
if(strFirstThree.length >= 2)
console.log(strFirstThree.splice(0,2).join("."));
else
console.error("prop was empty");
由于您使用的是 React ,因此props
的值已被函数getFakePropValue
伪造。里面的代码是无关紧要的,如果您在React组件中允许prop为空,那么我正在做的是随机返回一个String
。这是为了展示如何创建最小的健壮代码来避免出现异常。
接下来,下面是一个安全网,以确保变量trial123
始终具有字符串值,即使它是""
。
let trial123 = getFakePropValue() || "";
这意味着,如果函数返回类似null
的内容,则布尔表达式将执行第二个间隔,并返回空字符串""
,这将是trial123
的值。
继续,我删除了转换为toString
的那一行,我假设您已经在获取字符串格式的值。接下来。
var strFirstThree = trial123.split('.');
这将创建一个数组,其中每个位置都包含一部分IP地址。所以19.0.0.1将成为[19,0,0,1]
,这要归功于分隔符.
的分割。接下来。
if(strFirstThree.length >= 2)
console.log(strFirstThree.splice(0,2).join("."));
else
console.error("prop was empty");
最后一段代码使用条件if来确保我的数组具有值,然后再尝试splice
和join
。条件是避免异常,因为空数组上的splice
和join
仅返回一个空字符串。相反,您可以提出错误或需要的东西。因此,如果数组具有值,则我将splice(0,2)
保留在前两个位置,然后将该数组与'。'连接在一起。我推荐的方法比您想使用的substr
方法要多,因为如果得到的数字是 191.0.0.1 ,那么substr
会返回错误的字符串,但是splice
和join
永远不会发生。
有待改进的地方
编码愉快!