如何将文本重新格式化为其他格式?

时间:2020-01-24 16:36:45

标签: javascript jquery asp.net vb.net

如何编程我的代码以将BBBBB-AAA的这种模式更改为0AAABBBBB?我正在使用asp.net,vb.net和jQuery。

加拿大银行帐户路由号码的格式:

支票上显示的加拿大路由编号需要重新设置格式 电子付款方式则有所不同。如果检查显示路由 编号为BBBBB-AAA(其中AAA表示金融机构, BBBBB是分支),则必须将路由号更改为 0AAABBBBB以电子方式处理付款。例如,如果 蒙特利尔银行发行的账户支票显示 路由号码00011-001,则该号码必须为 重新格式化为000100011以电子方式付款 已处理。

我在.aspx页上从用户那里获取数据:

<input id="txtBankCode" maxlength="9" required="required" />

然后在jQuery .js页面上获取数据:

var bankCode = $("#txtBankCode").val()

我需要将bankCode改成0AAABBBBB而不是BBBBB-AAA的格式。我猜有些用户不会输入破折号,而有些用户会输入破折号。我该怎么办?

3 个答案:

答案 0 :(得分:2)

鉴于连字符是可选的,因此您不能依赖于连字符来拆分字符串。因此,替代解决方案是使用正则表达式根据字符串的输入格式重新组织字符串。试试这个:

这是一个JS解决方案:

var bankCode = 'BBBBB-AAA';
bankCode = bankCode.replace(/^(\w{5})-?(\w{3})$/, '0$2$1');

console.log(bankCode);

这与VB中的逻辑相同:

Dim bankCode As String = "BBBBB-AAA"
bankCode = Regex.Replace(bankCode, "^(\w{5})-?(\w{3})$", "0$2$1")

Console.WriteLine(bankCode)

答案 1 :(得分:1)

EDIT 我想我误解了您对可选破折号的评论。那么,拆分将在这里不起作用,因为它需要使用破折号。因此,您需要先通过删除破折号(如果有的话)来清理字符串,然后使用子字符串或regex重新排列它:

bankCode = bankCode.replace(/-/g, '');
const first = bankCode.substring(0,5);
const second = bankCode.substring(5);
bankCode = `0${second}${first}`;

答案 2 :(得分:1)

尝试一下。

function show() {
    var bankCode = $("#txtBankCode").val();
    console.log(bankCode.replace(/([a-zA-Z]{5})-?([a-z-A-Z]{3})/, `0$2$1`));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="txtBankCode" maxlength="9" required="required" />
<button type="button" onclick="show()">Show</button>