簡體   English   中英

從字符串 Javascript 中替換上標和下標字符

[英]Replace superscript and subscript chars from a string Javascript

我想從文本中刪除所有上標和下標字符。

表達式: '⁰'

在 stackoverflow 上找到了一個例子,但它只考慮上標數字,而不考慮字符或下標。

有誰知道如何實現這一目標? 一種方法是擁有所有可能的上標和下標並一個一個地替換它們,但這有點不切實際。

基於下標和上標 Unicode 范圍參考以及在UniView 工具中手動搜索“下標”和“上標”,您可以使用

.replace(/[\u006E\u00B0\u00B2\u00B3\u00B9\u02AF\u0670\u0711\u2121\u213B\u2207\u29B5\uFC5B-\uFC5D\uFC63\uFC90\uFCD9\u2070\u2071\u2074-\u208E\u2090-\u209C\u0345\u0656\u17D2\u1D62-\u1D6A\u2A27\u2C7C]+/g, '')

請參閱正則表達式演示

+量詞(一個或多個連續出現)將使正則表達式引擎更容易一次性刪除整塊 1+ 子/上標字符。

請注意, ᵀᴹ修飾字母,並不是正式的上標字符。 如果你想包括他們,你需要

var res = s.replace(/(?:\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0]|[\u006E\u00B0\u00B2\u00B3\u00B9\u02AF\u0670\u0711\u2121\u213B\u2207\u29B5\uFC5B-\uFC5D\uFC63\uFC90\uFCD9\u2070\u2071\u2074-\u208E\u2090-\u209C\u0345\u0656\u17D2\u1D62-\u1D6A\u2A27\u2C7C\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E\uFF9F])+/g, '')

這個演示

為了規范下標和上標數字,使用字典並在作為替換參數傳遞的匿名方法中動態替換是有意義的:

 var super_sub_script_dict = {'\⁰': '0', '\¹': '1', '\²': '2', '\³': '3', '\⁴': '4', '\⁵': '5', '\⁶': '6', '\⁷': '7', '\⁸': '8', '\⁹': '9', '\₀': '0', '\₁': '1', '\₂': '2', '\₃': '3', '\₄': '4', '\₅': '5', '\₆': '6', '\₇': '7', '\₈': '8', '\₉': '9'}; var test_string = "Subscript: ₀₁₂₃₄₅₆₇₈₉ and superscript: ⁰¹²³⁴⁵⁶⁷⁸⁹"; var regex = new RegExp('[' + Object.keys(super_sub_script_dict).join("") + ']', 'g'); // => /[⁰¹²³⁴⁵⁶⁷⁸⁹₀₁₂₃₄₅₆₇₈₉]/g // Or // var regex = /[\¹\²\³\⁰\⁴-\₉]/g; console.log(test_string.replace(regex, function(x) { return super_sub_script_dict[x]; }))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM