我有像这样的字符串: '1234picas' '1234 px' '145.4us'
我想将它们分成两部分:数字部分和非数字部分。例如:'1234.4us'需要在'1234.4'和'us'中拆分。我很想在最后一个数字和非数字之间插入一个分隔符并使用split,但是在JavaScript中有更好的方法吗
由于
注意:这不是特殊字符串中的字符串分割。它可以转换为那个,但这是我想避免的。
答案 0 :(得分:1)
这是使用parseFloat()和slice()执行此操作的一种方法,如果您愿意,可以将其添加到import java.util.Scanner;
import java.io.*;
import java.util.*;
public class WordLists {
//instance variables
private String[] words; //array of words taken in
private int wordCount;
private File name;
private Boolean hasLetter;
Scanner listScanner, secondScanner;
//constructor
public WordLists(String path) throws FileNotFoundException{
//throws exception because it takes and scans a file
wordCount = 0;
name = new File(path);
hasLetter = false;
listScanner = new Scanner(name);
secondScanner = new Scanner(name);
while(listScanner.hasNextLine()){
listScanner.nextLine();
wordCount++;
}
words = new String [wordCount];
for(int i = 0; i < wordCount; i++){
words[i] = secondScanner.nextLine();
}
listScanner.close();
secondScanner.close();
}
public static void main(String[] args){
try {
WordLists w = new WordLists("dictionary.txt");
}catch (FileNotFoundException e){
e.printStackTrace();
}
System.out.println("Done");
}
}
:
Sting.prototype
答案 1 :(得分:1)
您可以使用String.prototype.match()
执行此操作:
const a = '1234picas';
const b = '1234 px';
const c = '145.4us';
function split(input) {
const splitArray = input.match(/([\d\.]+)(.*)/); // match only digits and decimal points in the first group and match the rest of the string in second group
return {
numeric: splitArray[1],
nonnumeric: splitArray[2],
};
}
console.log(split(a));
console.log(split(b));
console.log(split(c));
答案 2 :(得分:1)
您可以使用前瞻使用.split
和正则表达式:
str.split(/(?=[^\d.-])/g))
.map(y => [
y[0],
y.slice(1).join('').trim()
])
x = ["1234picas", "1234 px", "145.4us"];
console.log(x.map(y =>
y.split(/(?=[^\d.-])/g))
.map(y => [
y[0],
y.slice(1).join('').trim()
])
)
&#13;
答案 3 :(得分:1)
这可能会对您有所帮助:
Posts
它基本上表示匹配字母或匹配数字与可选的句点。 ig是不敏感的(这不是真正需要的)和全局的,因为在第一次匹配时不返回,继续进行直到所有字符串都被解析。
答案 4 :(得分:1)
正则表达式!
以下是它的工作原理:https://regex101.com/r/XbI7Mq/1
const test = ['1234picas', '1234 px', '145.4us', 'no'];
const regex = /^(\d+\.?\d+)\s?(.*)/;
test.forEach(i => {
const result = regex.exec(i);
if (result) {
console.log(result[1], result[2])
}
});
&#13;
答案 5 :(得分:1)
您可以在javascript中执行此操作以进行拆分:
var myString = '145.4us';
var splits = myString.split(/(\d+\.?\d+)/);
console.log(splits);