拆分带有十进制数字和一些字符的字符串

时间:2018-04-17 21:13:33

标签: javascript reactjs jsx

我有像这样的字符串:        '1234picas'         '1234 px'         '145.4us'

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

由于

注意:这不是特殊字符串中的字符串分割。它可以转换为那个,但这是我想避免的。

6 个答案:

答案 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));

Regex explanation | Regex101

答案 2 :(得分:1)

您可以使用前瞻使用.split和正则表达式:

str.split(/(?=[^\d.-])/g))
   .map(y => [
         y[0],
         y.slice(1).join('').trim()
   ])

&#13;
&#13;
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;
&#13;
&#13;

答案 3 :(得分:1)

这可能会对您有所帮助:

Posts

MDN for String.match

它基本上表示匹配字母或匹配数字与可选的句点。 ig是不敏感的(这不是真正需要的)和全局的,因为在第一次匹配时不返回,继续进行直到所有字符串都被解析。

答案 4 :(得分:1)

正则表达式!
以下是它的工作原理:https://regex101.com/r/XbI7Mq/1

&#13;
&#13;
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;
&#13;
&#13;

答案 5 :(得分:1)

您可以在javascript中执行此操作以进行拆分:

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