【问题标题】:In javascript, is there a way to distinguish letters from other characters?在javascript中,有没有办法区分字母和其他字符?
【发布时间】:2015-05-16 18:48:10
【问题描述】:

我想把“你”换成“你姐姐”。然而,像“youtube”这样的词必须保持不变。所以我决定使用

replace(/ you /, " your sister ");

但是现在字符串“我爱你!”保持不变,以及单词 you 后面没有带空格的字符串的任何字符串。我想知道“you”后面的字符是否是字母。如果是,则保持不变,如果不是,则将其更改为“你的妹妹”。

【问题讨论】:

  • str.replace("你", "你妹");
  • @torazaburo 他们可能还在寻找有用的链接或关于如何使用它的完整答案,因为\b 仅在用于真正的正则表达式调用时才有意义=)

标签: javascript regex string replace


【解决方案1】:

什么是“信”?这个问题并不像乍看之下听起来那样愚蠢:例如,许多语言将7 视为一个数字,但也有一些拼写法(例如Squamish)实际上是一个字母。因此,在这种情况下,您需要更准确地描述您的意思,以便可以根据具体情况定制答案(您在这方面做得很好,但您的标题仍然具有启发性)。

要回答实际问题,您可以进行全局正则表达式替换,例如:

const replaced = input.replace(/\byou\b/g, 'your sister');

使用这个,字符串“you”将被字符串“your Sister”替换,但前提是它被“单词边界”(空格、句子的开头/结尾、符号等)包围。

我们还需要使用/.../g 修饰符(用于“全局匹配”),以便替换作用于“你”的所有个实例,而不仅仅是第一个。

【讨论】:

    【解决方案2】:

    你需要字边界字符\b

    s.replace(/\byou\b/g, 'your sister')
    

    【讨论】:

    • 虽然可能带有g修饰符
    【解决方案3】:

    您正在寻找\b(单词边界):

    slice(/\byou\b/, "your sister")
    

    但是slice 是什么?我猜你的意思是像

    string.replace(/\byou\b/, "your sister")
    

    【讨论】:

      【解决方案4】:

      \b 匹配单词边界——在单词字符(实际上是字母数字加下划线1)和非单词字符之间。

      所以/\byou\b/ 在不属于另一个词的情况下会匹配“you”。


      1 这是出于“历史原因”:它使匹配 C 中允许的常用字符集(如编程语言标识符)变得容易。

      【讨论】:

        猜你喜欢
        • 2022-06-12
        • 1970-01-01
        • 2014-09-26
        • 2018-04-27
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多