【问题标题】:How to break a dynamic(changing) string into two different parts?如何将动态(变化的)字符串分成两个不同的部分?
【发布时间】:2020-06-02 14:47:13
【问题描述】:

我有一个来自 API 响应的字段,它为我提供了“欢迎姓名”之类的数据,也可以是“欢迎回来姓名”。 Name 可以是 firstName middleName lastName 的任意组合。我想把它分成两部分,

1 - “欢迎”或“欢迎回来”(根据 API 的响应)

2 - “名称”

for example :

if data is "Welcome Aman Pratap Singh" break into 1-"Welcome" 2-"Aman Pratap Singh" 

if data is "Welcome back ABCDE PQR XYZ" break into 1-"Welcome back" 2-"ABCDE PQR XYZ"

if data is "Welcome ABC XYZ" break into 1-"Welcome" 2-"ABC XYZ"

if data is "Welcome back ABC XYZ" break into 1-"Welcome back" 2-"ABC XYZ"

if data is  "Welcome ABCDE" break into 1-"Welcome" 2-"ABCDE"

if data is  "Welcome back ABCDE" break into 1-"Welcome back" 2-"ABCDE"

【问题讨论】:

  • 如果我的名字是back会怎样?
  • 如果名称是 Back 并且响应类似于“Welcome Back”然后 1-“Welcome”2-“Back”或者如果响应是“Welcome back Back”那么 1-“Welcome back”2- "Back" ,尽管我认为这将是我得到响应的数据的罕见情况。

标签: javascript html regex


【解决方案1】:

一个简单的正则表达式应该能够做到这一点:

let splitWelcomeStr = str => {
  let match = str.match(/^(Welcome( back)?) (.+)$/);
  if (!match) throw new Error('Invalid welcome string provided');
  return { welcome: match[1], name: match[3] };
};

console.log(splitWelcomeStr('Welcome John'));
console.log(splitWelcomeStr('Welcome John Doe'));
console.log(splitWelcomeStr('Welcome John H. Doe'));
console.log(splitWelcomeStr('Welcome back John'));
console.log(splitWelcomeStr('Welcome back John Doe'));
console.log(splitWelcomeStr('Welcome back John H. Doe'));
console.log(splitWelcomeStr('Welcome back'));
console.log(splitWelcomeStr('Welcome back back'));

所用正则表达式的细分:

^(Welcome( back)?) (.+)$

^                         Match the start of the sequence
 (               )        Create a result at index 1
  Welcome                 The string "Welcome"
         (     )?         An optional string (and a result at index 2)
           back           The string " back" (prefixed with a space!)
                   (.+)   A space followed by  match at index 3 for any further characters
                       $  Match the end of the sequence

【讨论】:

    【解决方案2】:

    您可以使用 javascript 中的split() 方法将您的字符串“拆分”为字符串数组。

    示例:

    var str = "hello sir";
    var arrayOfStrings = str.split(" ");
    

    所以现在arrayOfStrings[0] 中包含“你好”, 并且arrayOfStrings[1] 中包含“先生”

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多