GVKun编程网logo

js中关于el表达式的使用方法(js中关于el表达式的使用方法有哪些)

26

以上就是给各位分享js中关于el表达式的使用方法,其中也会对js中关于el表达式的使用方法有哪些进行解释,同时本文还将给你拓展arthas中ognl表达式的使用、C#中关于匿名委托和Lambda表达式

以上就是给各位分享js中关于el表达式的使用方法,其中也会对js中关于el表达式的使用方法有哪些进行解释,同时本文还将给你拓展arthas中ognl表达式的使用、C#中关于匿名委托和Lambda表达式的使用详解、C++中正则表达式的使用方法详解、CSS中关于!important的使用方法总结等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

js中关于el表达式的使用方法(js中关于el表达式的使用方法有哪些)

js中关于el表达式的使用方法(js中关于el表达式的使用方法有哪些)

本文主要为大家分享js中关于el表达式的使用方法,具有很好的参考价值,希望能帮助到大家。注意,这里想说的不是jsp里面嵌套的el表达式的使用,而是在js中使用。

场景:

页面跳转后,使用spring mvc向前端页面传过来一个json对象,要在js中获取后,做处理。

返回的json对象:

{nodes:[{contactmobile:15922208502,orderno:XNH31918062989476864},{id:12198,group:11,content:把考虑考虑,modelname:Company}],links:[{target:12198,id:15016,relationType:公司,source:12194}]}
var graph; 
var flag = ${empty jsonData}; 
if(flag!=true){ 
  graph = eval('(' + '${jsonData}' + ')'); 
};

这里有一个注意点:

在js中使用el表达式,一定要使用引号括起来。如果返回的json中包括双引号,那么就使用单引号包围el表达式,否则,使用双引号。

另外,注意使用eval函数将json串转为转为对象的写法。

相关推荐:

常用的el表达式的使用方法

arthas中ognl表达式的使用

arthas中ognl表达式的使用

支持方法调用

xxx.doSomeSpecial()

支持类的静态方法调用和值访问,表达式的格式

@java.lang.String@format(''foo %s'', ''bar'')

@tutorial.MyConstant@APP_NAME;

支持赋值操作和表达式串联
price=100,discount=0.8,calculatePrice()

getstatic com.xxl.job.core.executor.impl.XxlJobSpringExecutor applicationContext ''#map=@new java.lang.HashMap(),
map.put("name",1)''

ognl''#map=#@java.util.LinkedHashMap@{ "foo" : "foo value", "bar" : "bar value" }''

arthas
创建对象 需要指定 -c classloader

C#中关于匿名委托和Lambda表达式的使用详解

C#中关于匿名委托和Lambda表达式的使用详解

这篇文章主要为大家详细介绍了c#匿名委托与lambda表达式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

通过使用匿名委托(匿名方法),使编程变得更加灵活,有关委托与匿名委托请参考我的前一篇Blog《委托与匿名委托》。

继续之前示例,代码如下:


static void Main(string[] args)
{

   Worker.TwoNumberHandleMethodDelegate method = delegate(int a, int b)
  {
   return a + b;
  };
   Worker worker = new Worker();
   int result = worker.HandleTwoNumber(10, 10,method);

   Console.WriteLine(String.Format("Result:{0}", result));

   Console.ReadLine();
}
登录后复制

上述程序worker将按照Main给定的参数与计算方式(method),计算出结果返回。根据等效性代码可以进一步简化,如下:


 static void Main(string[] args)
  {
   Worker worker = new Worker();
   int result = worker.HandleTwoNumber(10, 10, delegate (int a, int b)
   {
    return a + b;
   });

   Console.WriteLine(String.Format("Result:{0}", result));

   Console.ReadLine();
  }
登录后复制

看到此处有过js、jquery开发经验的朋友可能会突感亲切,哦...匿名函数。在jquery中到处都用的$("#id").click(function(){.........})。

C#中对于匿名委托在使用时可以进一步精简,再精简的结果就变成了表达式,称为Lambda表达式。


static void Main(string[] args)
  {

   Worker.TwoNumberHandleMethodDelegate method = delegate(int a, int b)
  {
   return a + b;
  };
}
登录后复制

Lambda表达式表述:


static void Main(string[] args)
  {

   Worker.TwoNumberHandleMethodDelegate method = (a, b)=>
  {
   return a + b;
  };
}
登录后复制

C# Lambda表达式使用 => 分为前后两部分,(a, b) 为参数列表,{....}为方法体。


 static void Main(string[] args)
  {
   Worker worker = new Worker();
   int result = worker.HandleTwoNumber(10, 10, (a, b) =>
   {
    return a + b;
   });

   Console.WriteLine(String.Format("Result:{0}", result));

   Console.ReadLine();
  }
登录后复制

下面给出方法与Lambda表达式转换对照


private void A1()
    {
      Console.WriteLine("....");
    }
//Lambda
()=>{Console.WriteLine("....");};
//如果方法体代码只有一句,如上还可省去方法体大括号
()=>Console.WriteLine("....");
登录后复制


private string A2(int a, int b)
    {
      return String.Format("{0}+{1}={2}", a, b, a + b);
    }
    //如上示例可简化为
    (a,b)=>{return String.Format("{0}+{1}={2}", a, b, a + b);}
    //因为方法体只有一句,可进一步简化
    (a,b)=> String.Format("{0}+{1}={2}", a, b, a + b);
    //此时注意return应该去掉,C#编译器自动识别=>做返回值
登录后复制


private string A3(int a)
    {
      return String.Format("{0}", a);
    }
    //上面示例可简化为
    (a)=>String.Format("{0}", a);
    //如果参数列表只有一个参数,参数列表的()可以去掉,上面进一步简化为
    a=>String.Format("{0}", a);
登录后复制

通过这篇文章你可能已经意识到在C#中,方法、委托、匿名方法,lambda表达式并无明显区分边界,它们之间可以灵活转化。在实际开发中关于委托的知识点非常多,如委托与事件。如果时间允许,希望能把委托深化的文章写一下。

以上就是C#中关于匿名委托和Lambda表达式的使用详解的详细内容,更多请关注php中文网其它相关文章!

C++中正则表达式的使用方法详解

C++中正则表达式的使用方法详解

介绍

C++ 正则表达式教程解释了 C++ 中正则表达式的工作,包括正则表达式匹配、搜索、替换、输入验证和标记化的功能。

几乎所有的编程语言都支持正则表达式。 C++ 从 C++11 开始直接支持正则表达式。除了编程语言之外,大多数文本处理程序(如词法分析器、高级文本编辑器等)都使用正则表达式。

在本教程中,我们将探讨正则表达式的一般细节以及 C++ 编程方面的细节。

正则匹配中的基础符号

  • ^开头
  • ()组
  • []或,
  • {}几次
  • $结尾

1. C++ 中的正则表达式 (Regex)

正则表达式是包含一系列字符的表达式,这些字符定义了可用于字符串搜索算法、查找或查找/替换算法等的特定搜索模式。正则表达式也用于输入验证。

大多数编程语言要么为正则表达式提供内置功能,要么通过库提供。从 C++11 开始,C++ 通过 标准库提供正则表达式支持。

用于解析正则表达式的正则表达式处理器将其转换为内部表示,该表示被执行并与表示正在搜索的文本的字符串匹配。 C++11 使用 ECMAScript 语法作为正则表达式的默认语法。 ECMAScript 很简单,但它提供了强大的正则表达式功能。 让我们看看我们在正则表达式中指定的一些模式,如范围规范、重复模式等。

1.1 范围规范

指定字符或文字的范围是正则表达式中使用的最简单的标准之一。

例如,我们可以指定一个从a到z的小写字母范围,如下所示:[a-z],这将只匹配一个小写字符。

下列条件:[A-Za-z0-9]

上面的表达式指定了包含一个大写字母、一个小写字母和0到9之间的数字的范围。

上述表达式中的方括号([])具有特殊含义,即用于指定范围。如果你想包含一个括号作为表达式的一部分,那么你需要转义它。

那么下面的表达式,[\[0-9]

上面的表达式表示一个左括号和一个0到9范围内的数字作为正则表达式。

但请注意,当我们使用 C++ 编程时,我们需要使用 C++ 特定的转义序列,如下所示:[\\[0-9]

1.2 重复模式

我们上面指定的范围示例只匹配一个字符或文字。如果我们想匹配多个字符,我们通常在模式中指定“表达式修饰符”,从而使其成为一个重复的模式。

表达式修饰符可以是+,表示匹配一个模式出现一次或多次,也可以是*,表示匹配一个模式出现零次或多次。

例如,下面的表达式,

[a-z]+ 匹配 a、aaa、abcd、softwaretestinghelp 等字符串。请注意,它永远不会匹配空白字符串。

[a-z]*将匹配一个空白字符串或任何上面的字符串。

如果要指定一组字符匹配一次或多次,则可以使用括号,如下所示:(Xyz)+

上面的表达式将匹配Xyz、XyzXyz和XyzXyz等等。

2. C++正则表达式的例子

考虑一个匹配 MS-DOS 文件名的正则表达式,如下所示。

char regex_filename[] = “[a-zA-Z_] [a-zA-Z_0-9]*\\.[a-zA-Z0-9]+”;

上面的正则表达式可以解释如下:

匹配一个字母(小写,然后大写)或下划线。然后匹配零个或多个字符,其中每个字符可以是字母、下划线或数字。然后匹配文字点(.)。在点之后,匹配一个或多个字符,其中每个字符可以是表示文件扩展名的字母或数字。

3. C++正则表达式中使用的函数模板

现在让我们讨论在 C++ 中编写正则表达式时的一些重要函数模板。

3.1 regex_match()

此函数模板用于匹配给定的模式。如果给定的表达式与字符串匹配,则此函数返回 true。否则,该函数返回 false。

以下是演示 regex_match 函数的 C++ 编程示例。

#include <iostream>
#include <string>
#include <regex>
using namespace std;
 
int main () {
 
   if (regex_match ("softwareTesting", regex("(soft)(.*)") ))
      cout << "string:literal => matched\n";
 
   const char mystr[] = "SoftwareTestingHelp";
   string str ("software");
   regex str_expr ("(soft)(.*)");
 
   if (regex_match (str,str_expr))
      cout << "string:object => matched\n";
 
   if ( regex_match ( str.begin(), str.end(), str_expr ) )
      cout << "string:range(begin-end)=> matched\n";
 
   cmatch cm;  //匹配的词语检索出来
   regex_match (mystr,cm,str_expr);
    
   smatch sm;
   regex_match (str,sm,str_expr);
    
   regex_match ( str.cbegin(), str.cend(), sm, str_expr);
   cout << "String:range, size:" << sm.size() << " matches\n";
 
   
   regex_match ( mystr, cm, str_expr, regex_constants::match_default );
 
   cout << "the matches are: ";
   for (unsigned i=0; i<sm.size(); ++i) {
      cout << "[" << sm[i] << "] ";
   }
 
   cout << endl;
 
   return 0;
}

在上面的程序中,首先,我们使用regex_match函数将字符串" softwareTesting "与正则表达式" (soft)(.*) "匹配。随后,我们还通过向regex_match传递字符串对象、范围等来演示regex_match的不同变体。

3.2 regex_search()

函数regex_search()用于在字符串中搜索匹配正则表达式的模式。

考虑下面的c++程序,它显示了regex_search()的用法。

#include <iostream> 
#include <regex> 
#include<string.h> 
using namespace std; 
   
int main() 
{ 
    //string to be searched
    string mystr = "She sells_sea shells in the sea shore"; 
   
    // regex expression for pattern to be searched 
    regex regexp("s[a-z_]+"); 
   
    // flag type for determining the matching behavior (in this case on string objects)
     smatch m; 
   
    // regex_search that searches pattern regexp in the string mystr  
    regex_search(mystr, m, regexp); 
  
    cout<<"String that matches the pattern:"<<endl;
    for (auto x : m) 
        cout << x << " "; 
    return 0; 
}

我们先指定一个字符串,然后使用regex对象指定一个正则表达式。这个字符串和regex连同smatch标志类型一起被传递给regex_search函数。该函数在输入字符串中搜索第一个出现的模式,并返回匹配的字符串。

3.3 regex_replace()

函数regex_replace()用于用字符串替换与正则表达式匹配的模式。

让我们使用一个c++程序来演示regex_replace()函数。

#include <iostream> 
#include <string> 
#include <regex> 
#include <iterator> 
using namespace std; 
   
int main() 
{  
    string mystr = "This is software testing Help portal \n"; 
     
    cout<<"Input string: "<<mystr<<endl;
       
    // regex to match string beginning with ''p'' 
    regex regexp("p[a-zA-z]+"); 
    cout<<"Replace the word ''portal'' with word ''website'' : "; 
    // regex_replace() for replacing the match with the word ''website''  
    cout << regex_replace(mystr, regexp, "website"); 
     
    string result; 
       
    cout<<"Replace the word ''website'' back to ''portal'': ";
    // regex_replace( ) for replacing the match back with ''portal'' 
    regex_replace(back_inserter(result), mystr.begin(), mystr.end(), 
                  regexp,  "portal"); 
   
    cout << result; 
   
    return 0; 
}

这里,我们有一个输入字符串。我们提供了一个正则表达式来匹配以 p 开头的字符串。然后我们将匹配的单词替换为website。接下来,我们将website替换回portal。

4.C++输入验证

我们已经讨论了使用regex进行模式匹配的主要函数模板。值得注意的是,regex服务的主要目的是输入验证。可以使用regex表达式验证从标准输入设备输入的输入。

检查下面的程序,以演示如何使用regex验证传入的数据。

#include <iostream>
#include <regex>
#include <string>
using namespace std;
  
int main()
{
    string input;
    regex integer_expr("(\\+|-)?[[:digit:]]+");
    //As long as the input is correct ask for another number
    while(true)
    {
        cout<<"Enter the input: ";
        cin>>input;
        if(!cin) break;
        //Exit when the user inputs q
        if(input=="q")
            break;
        if(regex_match(input,integer_expr))
            cout<<"Input is an integer"<<endl;
        else
        {cout<<"Invalid input : Not an integer"<<endl;}
    }
}

这个程序匹配用户输入的输入,以验证它是否是整数。上面的输出显示,当输入一个整数时,它会给出一个适当的消息,而当输入任何其他数据时,它会将该消息作为无效输入。

5.总结

Regex在搜索引擎中用于搜索模式,搜索和替换应用程序的对话框,如字处理器和文本编辑器。Regex也用于UNIX实用程序,如sed、awk以及程序的词法分析。

在本教程中,我们已经看到了用于匹配、搜索和替换模式的函数。使用这些函数,我们基本上可以开发一个高效的应用程序,使用regex实现所需的功能。

Regex允许通过修补模式有效地验证输入或搜索并替换字符串,这可以使用很少的行来完成。

以上就是C++中正则表达式的使用方法详解的详细内容,更多关于C++正则表达式的资料请关注其它相关文章!

您可能感兴趣的文章:
  • C++实现LeetCode(10.正则表达式匹配)
  • C++使用正则表达式的详细教程
  • C++中使用正则匹配问题

CSS中关于!important的使用方法总结

CSS中关于!important的使用方法总结

下面简要的给大家讲一下css 中一个比较重要的!important属性,从笔者的实践中总结了以下两点:

1、用于解决IE对某些CSS规范有偏差的情况.

    比如在IE中的效果总是和其他的浏览器如firefox,opera等相差2px,导致页面布局有错位, 这是因为IE对盒之间距离的解释的bug造成的,针对这种情况我们就可以利用!important来帮助解决。

 例如下面这个样式

.myclass{
 margin-left:20px!important;
 margin-left:40px;

}
登录后复制
登录后复制

如果是在firefox,opera,chrome中,这些浏览器支持!important属性,也就是说他们会默认让margin-left:20px!important; 这条语句生效,下面的不带!important声明的样式将不会覆盖它,换句话说就是他的级别最高,下面的人都不能取代我!

立即学习“前端免费学习笔记(深入)”;

但是,如果换作是IE浏览器会是什么情况呢,因为IE不支持!important ,就是说IE不认识这句话是什么意思,于是傻瓜IE就把这条给略过了,下面那条他可是认识的,于是margin-left:40px;
就生效了。

说到这,需要有一点注意:

并不说IE真的不认识!important,如果你单单想用!important去区别IE和其他浏览器那你就错了,比如:

.myclass{
backgroud-color:black !important;
}
登录后复制

我们异想天开的认为,这条样式IE不认,我们可以让它在其他浏览器上定制显示。到底是不是这样呢? 真的不是! IE也认了。

说到这你是不是有点糊涂了,到底IE认不认啊???

答案很简单,只有当同时出现两个同名的样式时,才可以这样用,就像下面这样的.

.myclass{
 margin-left:20px!important;
 margin-left:40px;

}
登录后复制
登录后复制

2、如果有定义了一个样式A,比如font-size,你不打算让以后也叫样式A的覆盖掉这个font-size,也可以用 !important . 而如果新样式也用了!important 则还是会强制覆盖掉

.A{
 font-size:12px !important;
}
.A{
 font-size:14px;   //不会生效
}

.A{
 font-size:14px !important; //生效
}
登录后复制

注意,一定要是同名的样式,也就是样式名都叫A的样式才行,如果是父代与子代的情况就不管用了,比如说:

<html>
<head>
<style>
.father{
font-size:12px !important;
}
.child{
font-size:14px;
}
</style>
<body>
<div>
 <div>I am child </div>
</div>
</body>
</html>
登录后复制

这种情况下,child的font-size就是14px,不受 father影响。

以上就是CSS中关于!important的使用方法总结的详细内容,更多请关注php中文网其它相关文章!

今天关于js中关于el表达式的使用方法js中关于el表达式的使用方法有哪些的介绍到此结束,谢谢您的阅读,有关arthas中ognl表达式的使用、C#中关于匿名委托和Lambda表达式的使用详解、C++中正则表达式的使用方法详解、CSS中关于!important的使用方法总结等更多相关知识的信息可以在本站进行查询。

本文标签: