我使用API调用来填充我网站上的某些字段。这些字段填充了地址的不同部分。但是,在我的第一个地址行字段中,该值是缩写的。例如,如果我有史密斯街'它将作为史密斯St'插入。为了解决这个问题,我使用javascript来替换值,例如:
value = value.replace("St", "Street");
但是,如果我有一个价值,那就是斯坦利街'它将返回Streetanley Street'。
有没有人知道我可以用来将替换方法应用于字符串中的最后一个单词的方法?
答案 0 :(得分:3)
您正在寻找正则表达式。如果你打算写很多JavaScript,请习惯他们。
value = value.replace(/St$/, "Street");
只会替换"St"
,如果它是字符串的结尾。 ($
匹配字符串结尾)
如果我们想在字符串的末尾允许空格,并且仍然替换,我们会说:
value = value.replace(/St\s*$/, "Street");
\s
表示“任何空白字符”,*
表示“0或更多次”。
如果我们想要同时匹配"St"
和"St."
,我们会说:
value = value.replace(/St\.?\s*$/, "Street");
其中\.
只是“。”,?
表示“最多一次”。
为避免替换单词中间的“st”,请使用单词边界(\b
):
value = value.replace(/\bSt\.?\s*$/, "Street");
你可能想要使用不区分大小写的匹配(/i
),因此“Main st”的转换与“Main Street”一样:
value = value.replace(/\bSt\.?\s*$/i, "Street");
答案 1 :(得分:1)
value = value.replace(/(\s)St(\S*)$/, "$1Street$2");
/\sSt\S*$/
如果正在与St
(\s
- 空格字符一起开始,则会匹配最后一个字,然后是St
然后是\S
- 不是空白字符多次*
,然后$
- 字符串结尾)。
然后你需要用()
包裹你需要重复使用的任何部分,然后用$1
$2
等重复使用它们
答案 2 :(得分:0)
您可以在单词中使用边界。要创建边界,请在
中包装您的单词 /\bYourWord or words\b/g
value.replace(/\bSt\b/g, "Street");