用JavaScript返回邮政编码的首字母

wwwo4jvm  于 2023-04-10  发布在  Java
关注(0)|答案(5)|浏览(142)

如何在javascript中获取邮政编码的首字母?我只需要数字开始之前的字母,就像这样:

E.g - 'L159XU' would return 'L'
E.g - 'TW136PZ' would return 'TW'

我最初是这样做的:

const letters = postcode.substring(0, 2);

但是有的只有一个字母,而有的有两个,有没有办法做到这一点?

py49o6xq

py49o6xq1#

我测试了这个:HTML

<p id="test"></p>

JavaScript正则表达式

let text = 'TW136PZ';
let pattern = /[a-zA-Z]+|[0-9]+/g;
let result = text.match(pattern);

document.getElementById("test").innerHTML = result[0]; // return "TW"
7xzttuei

7xzttuei2#

使用带有正则表达式的split函数,

let res = "TW136PZ".split(/[0-9]+/)[0] ; // TW

关于regex here

dhxwm5r4

dhxwm5r43#

存在不同的有效实现

function callX() {
    return 'TW136PZ'.slice(0, 'TW136PZ'.search(/[0-9]/))
}
function callY() {
    return 'TW136PZ'.split(/[0-9]+/)[0]
}
function callZ() {
    return 'TW136PZ'.match( /^[a-zA-Z]+/ )[0]
}

在对这些进行基准测试时:

performance.mark("beginX");
for (let i = 0; i < 10000000; ++i) {
    callX();
}
performance.mark("endX");

performance.mark("beginY");
for (let i = 0; i < 10000000; ++i) {
    callY();
}
performance.mark("endY");

performance.mark("beginZ");
for (let i = 0; i < 10000000; ++i) {
    callZ();
}
performance.mark("endZ");

performance.measure("X","beginX","endX");
performance.measure("Y","beginY","endY");
performance.measure("Z","beginZ","endZ");

console.log(performance.getEntriesByType("measure"))

第一个实现是最快的,而第二个实现(使用split)是最慢的。我认为这是由于不需要示例化另一个数组。

yyhrrdl8

yyhrrdl84#

发布一个不使用正则表达式的解决方案,因为我还没有看到一个:

function parsePostcode(postcode) {
    const charIsADigit = function(ch) {
        const code = ch.charCodeAt(0)

        return code >= 48 && 58 > code;
    };

    let prefix = ""

    for (let i = 0; i < postcode.length; ++i) {
        const ch = postcode[i]
        const is_digit = charIsADigit(ch)

        if (is_digit) break;

        prefix += ch
    }

    return prefix;
}

console.log(parsePostcode("L159XU"))
console.log(parsePostcode("TW136PZ"))
00jrzges

00jrzges5#

const postc='TwA1234';

const letters=postc.match( /^[a-zA-Z]+/ )[0];

console.log(letters);

^-输入开始
a-z-包含小写英语字母
A-Z-包括大写
+-出现一次或多次!
如您所愿,它返回一个字符串,其中包含所需数量的拉丁字母,本例中为三个。

相关问题