我有一个字符串进入一个方法,该方法是URL构建类的一部分,并且变化很大。在这些变量的情况下,我想捕获一个像这样的字符串:
/MODEL(guid)
并将其转换为
/MODEL?id=guid
我的问题是什么才是最好的方法来捕获进入方法的字符串看起来像“/ MODEL(guid)” - 模型是什么,guid是任何guid并将它们转换为如上所示?例如:
/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)
应转换为
/ACCOUNT?id=d60c0dbb-426d-4971-86a6-0fd9d8eaff91
如果任何字符串进入的方法没有看起来像第一个示例的部分,则应该忽略它。我会假设某种正则表达式,但我甚至不知道从哪里开始。
答案 0 :(得分:3)
我建议的内容如下:
/(?!\/[\w\d]+)\(([\w\d]{8}\-([\w\d]{4}\-){3}[\w\d]{12})\)/
e.g。
let a = /(?!\/[\w\d]+)\(([\w\d]{8}\-([\w\d]{4}\-){3}[\w\d]{12})\)/;
let b = "/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)";
let result = b.replace(a, "?id=$1");
console.log(result);

答案 1 :(得分:2)
您可以使用此代码:
let str = '/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)';
str = str.replace(/(\/\w+)\(([^)]+)\)/g, '$1?id=$2');
console.log(str);
//=> /ACCOUNT?id=d60c0dbb-426d-4971-86a6-0fd9d8eaff91
正则表达式(\/\w+)\(([^)]+)\)/
使用2个捕获组:
(\/\w+)
是匹配以/
开头,后跟1 +字字符的网址段的第一组\(([^)]+)\)
第二组被文字(
和)
答案 2 :(得分:0)
EAZY:
var string = '/ACCOUNT(d60c0dbb-426d-4971-86a6-0fd9d8eaff91)';
var matches = string.match(/\/(.*)\((.*)\)/);
var new_string = `/${matches[1]}?id=${matches[2]}`
答案 3 :(得分:0)
那么你需要一个Java或Js函数吗?对于这两个我会使用拆分 对于java:https://www.tutorialspoint.com/java/lang/string_split.htm 对于Js:https://javascript.info/regexp-methods
在Js中它会给出类似的东西:
SELECT CAST(eventdata().query('/EVENT_INSTANCE/DatabaseName[1]/text()') as NVarchar(128))
它将为您提供一个包含2个值的数组:" / Account"和" id123)"
只需使用切片删除最后一个字符,然后连接以创建字符串
var inString = "/Account(id123)"
splitArray = inString.split("(");