Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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
Javascript 使用十进制数和一些字符拆分字符串_Javascript_Reactjs_Jsx - Fatal编程技术网

Javascript 使用十进制数和一些字符拆分字符串

Javascript 使用十进制数和一些字符拆分字符串,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我有这样的字符串: “1234picas” “1234像素” “145.4美元” 我想把它们分成两部分:数字部分和非数字部分。例如:“1234.4us”需要在“1234.4”和“us”中拆分。我很想在最后一个数字和非数字之间插入一个分隔符,并使用split,但是在JavaScript中有更好的方法吗 谢谢 注意:这不是特殊字符处的字符串切分。它可以被转换成那样,但这正是我试图避免的。这里有一种方法,使用和,您可以将它添加到Sting.prototype中,如果您愿意: const str1='

我有这样的字符串: “1234picas” “1234像素” “145.4美元”

我想把它们分成两部分:数字部分和非数字部分。例如:“1234.4us”需要在“1234.4”和“us”中拆分。我很想在最后一个数字和非数字之间插入一个分隔符,并使用split,但是在JavaScript中有更好的方法吗

谢谢


注意:这不是特殊字符处的字符串切分。它可以被转换成那样,但这正是我试图避免的。

这里有一种方法,使用和,您可以将它添加到
Sting.prototype中,如果您愿意:

const str1='1234picas',
str2='1234 px',
str3='145.4us';
String.prototype.split=函数(){
const num=parseFloat(这个);
const alph=this.slice(num.toString().length,this.length)
返回{
号码,
阿尔夫
}
}
console.log(str1.split());
console.log(str2.split());
log(str3.split())您可以使用以下方法执行此操作:

const a='1234picas';
常数b='1234 px';
常数c='145.4us';
功能拆分(输入){
const splitArray=input.match(/([\d\.]+)(.*)/);//仅匹配第一组中的数字和小数点,并匹配第二组中字符串的其余部分
返回{
数字:拆分数组[1],
非数字:拆分数组[2],
};
}
控制台日志(拆分(a));
控制台日志(拆分(b));

控制台日志(拆分(c))
您可以使用前瞻将
.split
与正则表达式一起使用:

str.split(/(?=[^\d.-])/g))
   .map(y => [
         y[0],
         y.slice(1).join('').trim()
   ])
x=[“1234PICA”、“1234PX”、“145.4us”];
console.log(x.map(y=>
y、 拆分(/(?=[^\d.-])/g))
.map(y=>[
y[0],
y、 切片(1)。连接(“”)。修剪()
])
)
这可能会帮助您:

var a = "4343.453fsdakfjdsa";
a.match(/[a-zA-Z]+|[\d\.?]+/ig);

它基本上是说用一个可选的句点来匹配字母或数字。ig是不敏感的(实际上并不需要),并且是全局的,因为在第一次匹配时不返回,直到所有字符串都被解析为止。

Regex
以下是它的工作原理:

const test=['1234PICA'、'1234PX'、'145.4us'、'否';
常量正则表达式=/^(\d+\.?\d+\s?(.*)/;
test.forEach(i=>{
const result=regex.exec(i);
如果(结果){
console.log(结果[1],结果[2])
}

});您可以在javascript中执行以下操作来拆分:

var myString = '145.4us';
var splits = myString.split(/(\d+\.?\d+)/);
console.log(splits);

使用常规表达式我正在阅读Scala的RegExp,我更困惑了。。。我将再次研究这一点,对于近100万个其他结果,这不是在特殊字符处拆分字符串。这可能是一条要遵循的路径,但我正在尝试避免它。所有这些变量都可以是
const
,而不是
let
:)@RahulDesai是的,你是对的:)