我目前正在学习C#和RegEx.我正在研究一个小的wordcrawler.我得到了许多单词的大清单,我可以逃避那些不适合我的RegEx的单词.
这是我的代码:
var WordRegex = new Regex("^[a-zA-Z]{4,}$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
var secondRegex = new Regex("([A-Z]{1})");
var words = new List<string>();
var finalList = new List<string>();
foreach (var word in words)
{
if (WordRegex.IsMatch(word) && secondRegex.Matches(word).Count == 1 || secondRegex.Matches(word).Count == 0)
{
finalList.Add(word);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果单词是'McLaren'(两个大写字母),它将无法将其添加到finalList.但是如果这些单词类似于'stackOverflow'(一个大写字母但不是字符串的开头),它确实会把它作为finallist.有没有简单的方法来防止这个问题?
PS:如果有比RegEx更好的方式让我知道!
这里有些例子:
("McLaren");//false
("Nissan");//true
("BMW");//false
("Subaru");//true
("Maserati");//true
("Mercedes Benz");//false
("Volkswagen");//true
("audi");//true
("Alfa Romeo");//false
("rollsRoyce");//false
("drive");//true
Run Code Online (Sandbox Code Playgroud)
这些都是真的应该被接受而另一个不应该被接受.
我想要达到的是正则表达式不应该在它写成'rollsRoyce'时添加,但如果它写成'Rollsroyce'或'RollsRoyce'则应该被接受.所以我必须检查字符串中是否有大写字母.
请看下面的代码:
Dim dtEstComplDate As Date
Try
dtEstComplDate = "08-mar-16"
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Run Code Online (Sandbox Code Playgroud)
如果我将计算机本地格式设置为英语(美国),'08-mar-16'则分配为dtEstComplDate现在#3/82016#
,如果我将计算机格式更改为意大利语,则此分配会导致以下异常:
“从字符串“08-mar-16”到类型“日期”的转换无效。”
我尝试使用08-mrz-16意大利设置。它不起作用。
如何替换一组我只知道第一个和最后一个的字符,中间是一个非常数的变量.
我所知道的是,这个字符串总是以&它开头,它将以;
string str = "Hello &145126451; mate!";
Run Code Online (Sandbox Code Playgroud)
怎么摆脱&145126451;?
所以期望的结果是:
string result = "Hello mate!"
Run Code Online (Sandbox Code Playgroud) 您好,有没有办法制定如下所示的条件?如果field为null则为false else field.Property?
class Node
{
public bool IsFilled;
}
class Holder
{
Node nodeBuffer;
public bool IsFilled => this.nodeBuffer?.IsFilled ?? false;
}
Run Code Online (Sandbox Code Playgroud)
我该怎么说if nodeBuffer is null then false else nodeBuffer.IsFilled呢?
我正在设计我的网页,因为我输入了书籍ID并输入了Nameofthebook.然后单击该书的堆栈可用的按钮是转到另一页然后不可用显示错误消息是书不可用我的项目(库管理系统)
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class Bookcheck : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string constr = null;
constr = ConfigurationManager.ConnectionStrings["librarymanagementconnetionstring"].ConnectionString;
SqlConnection cnn = new SqlConnection(constr);
cnn.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("SELECT*FROM BOOKREGISTRATIONDETAILS WHERE bookId='" …Run Code Online (Sandbox Code Playgroud) 好的,这次我正在使用VB.NET.仍然没有像C#那样获得VB,但无论如何.我要做的就是显示最后一部分...让我们说:C:\Program Files\Data\12345.doc.我想看到的只是12345.doc.我怎样才能做到这一点?
从方法中返回两个变量的最简单方法是什么?我想回归一个DataTable和一个Integer.
Private SomeType someMethod()
{
int x=0;
Datatable y;
//return x and y
}
Run Code Online (Sandbox Code Playgroud) 为什么我的排序不能正常工作?如果我单击以排序我的选择的值,那么它只在第一个数字后排序,所以如果我有100,33,2100,4432的值,那么我得到这个订单100,2100,33,4432
如何100小于33等等......
SELECT Replace(
CONVERT(VARCHAR,
CONVERT(INTEGER, Sum(
Isnull(
a.planabsatz_mt1 + a.planabsatz_mt2
+ a.planabsatz_mt3 + a.planabsatz_mt4
+ a.planabsatz_mt5 + a.planabsatz_mt6
+ a.planabsatz_mt7 + a.planabsatz_mt8
+ a.planabsatz_mt9 + a.planabsatz_mt10
+ a.planabsatz_mt11 + a.planabsatz_mt12, 0))), 1),
'.00', '')
Run Code Online (Sandbox Code Playgroud) 下面的代码执行我想要的,除了它太硬编码的事实,并将显示值为0的构造材料.现在它可能会显示
木材:100%,砌体:0%,混凝土:0%,钢:0%,轻金属:0%,移动房屋:0%,其他:0%,未知:0%
我想在那种情况下显示它
木材:100%
我是一个极端的amatuer,我知道如何做到这一点的唯一方法是10000 IF语句,但必须有一个更优雅的方式.convertFIRE函数是这些主要构造"桶"的映射
for (int row = firstrow + 1; row <= sheet5.LastRowNum; row++)
{
convertFIRE(sheet5.GetRow(row).GetCell(1).ToString());
if (constructioncode == "Wood")
{
wood = wood + sheet5.GetRow(row).GetCell(10).NumericCellValue;
}
else if (constructioncode == "Masonry")
{
masonry = masonry + sheet5.GetRow(row).GetCell(10).NumericCellValue;
}
else if (constructioncode == "Concrete")
{
concrete = concrete + sheet5.GetRow(row).GetCell(10).NumericCellValue;
}
else if (constructioncode == "Steel")
{
steel = steel + sheet5.GetRow(row).GetCell(10).NumericCellValue;
}
else if (constructioncode == "Light Metal")
{
lghtmetal = lghtmetal + sheet5.GetRow(row).GetCell(10).NumericCellValue;
}
else …Run Code Online (Sandbox Code Playgroud) 有人可以解释我(或显示规范/文档)为什么不允许以下内容:
string[] fiveFoos = Enumerable.Range(1, 5).Select(GetFoo).ToArray();
Run Code Online (Sandbox Code Playgroud)
...
static string GetFoo()
{
return "Foo";
}
Run Code Online (Sandbox Code Playgroud)
只有这将编译:
string[] fiveFoos = Enumerable.Range(1, 5).Select(i => GetFoo()).ToArray();
Run Code Online (Sandbox Code Playgroud)
从中投射的整数Enumerable.Range是不相关的,并且该方法GetFoo是无参数的并且清楚地返回String,所以为什么我仍然会得到以下编译器错误:
错误CS0411无法从用法中推断出方法'Enumerable.Select(IEnumerable,Func)'的类型参数.尝试显式指定类型参数.