我有一个具有特定模式的字符串:
23;chair,red [$3]
Run Code Online (Sandbox Code Playgroud)
即,一个数字后跟一个分号,然后是一个名称,后跟一个左方括号.
假设分号;始终存在且左方括号[始终存在于字符串中,如何在SQL Server查询中(和不包括);和[SQL Server查询之间提取文本?谢谢.
我在这里阅读了很多关于堆栈溢出的帖子比较子字符串搜索的性能(例如Python字符串搜索效率, 这是搜索子字符串的最有效方法吗?, python中的子字符串等等)
我还看了一下包含abstract.c的源代码实现.
据我所知,内置实现是迭代的:python docs
python是否有更多足够的技术来实现查找子字符串:Boyer-Moore算法, Rabin-Karp算法等...... ???
编辑
问题已经扩展: Python:通过嵌入复杂的算法改进子字符串搜索.
在C中,如果我有:
char *reg = "[R5]";
Run Code Online (Sandbox Code Playgroud)
而且我要
char *reg_alt = "R5" (相同的东西,但没有括号),我该怎么做?
我试过了
*char reg_alt = reg[1:2];
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
这是一个基于表现的问题,而不是" 我不理解 "或" 最佳实践 "的问题.
我在SQLServer数据库中有一个varchar字段,保证长度超过7个字符.我需要提取一个char(4)字段,该字段由varchar中的第2,第3,第4和第5个字符组成.
例如,如果varchar的值为1234567890,那么我将寻找2345部分.
在左右组合中使用子字符串是否有性能优势?
SELECT SUBSTRING(account,2,4) FROM payment
Run Code Online (Sandbox Code Playgroud)
要么
SELECT RIGHT(LEFT(account,5),4) FROM payment
Run Code Online (Sandbox Code Playgroud)
我注意到在一个有1,760,335条记录的表格上使用右键左边有一点点优势,但我不确定这是否是由于缓存查询等原因造成的.
更新
我做了更多的功课.似乎在这种情况下,右 - 左最终作为右子串执行.这是一个规则吗?或者它只是SQLServer决定皮肤这个特殊猫的方式?

我有一组类型的对象 Idea
public class Idea
{
public string Title { get; set; }
public string Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想通过substring搜索这个对象.例如,当我有标题" 想法 "的对象时,我希望在输入" idea "的任何子字符串时找到它:i,id,ide,idea,d,de,dea,e,ea,a.
我正在使用RavenDB来存储数据.搜索查询看起来像这样:
var ideas = session
.Query<IdeaByBodyOrTitle.IdeaSearchResult, IdeaByBodyOrTitle>()
.Where(x => x.Query.Contains(query))
.As<Idea>()
.ToList();
Run Code Online (Sandbox Code Playgroud)
索引如下:
public class IdeaByBodyOrTitle : AbstractIndexCreationTask<Idea, IdeaByBodyOrTitle.IdeaSearchResult>
{
public class IdeaSearchResult
{
public string Query;
public Idea Idea;
}
public IdeaByBodyOrTitle()
{
Map = ideas => from idea in ideas
select new
{
Query = new object[] { idea.Title.SplitSubstrings().Concat(idea.Body.SplitSubstrings()).Distinct().ToArray() }, …Run Code Online (Sandbox Code Playgroud)
我有一个字符串(例如:) "Hello there. My name is John. I work very hard. Hello there!",我试图找到字符串的出现次数"hello there".到目前为止,这是我的代码:
Dim input as String = "Hello there. My name is John. I work very hard. Hello there!"
Dim phrase as String = "hello there"
Dim Occurrences As Integer = 0
If input.toLower.Contains(phrase) = True Then
Occurrences = input.Split(phrase).Length
'REM: Do stuff
End If
Run Code Online (Sandbox Code Playgroud)
不幸的是,这行代码似乎是在每次看到第一个字母时分割字符串phrase,在本例中h.因此Occurrences = 2,我实际上得到的数字要大得多,而不是我希望得到的结果.我知道计算一个字符串中的分裂数是一种可怕的方式,即使我得到了正确的答案,所以有人可以帮助我并提供一些帮助吗?
我有一个表格,其中包含如下字符串的列.
RTSPP_LZ_AEN
RTSPP_LZ_CPS
RTSPP_LZ_HOUSTON
RTSPP_LZ_LCRA
RTSPP_LZ_NORTH
RTSPP_LZ_RAYBN
RTSPP_LZ_SOUTH
RTSPP_LZ_WEST
RTSPP_BTE_CC1
RTSPP_BTE_PUN1
RTSPP_BTE_PUN2
Run Code Online (Sandbox Code Playgroud)
我需要从第二次出现_直到字符串结尾获取子字符串,因为您可以看到子字符串不是固定长度.第一部分并不总是固定它可以改变.截至目前,我正在使用以下代码来实现它.
SELECT SUBSTRING([String],CHARINDEX('_',[String],(CHARINDEX('_',[String])+1))+1,100)
FROM [Table]
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将任意大的值作为处理可变长度的长度.有没有更好的方法呢?
我和Jekyll一起工作,我有字符串 balh blah blah&garbage **&*&% garbage <h1>TITLE</h1> &^*$%"
如何将以下代码更新为新版本的swift:
self.areaCodeLael.text! = localNumber.substring(to: localNumber.index(localNumber.startIndex, offsetBy: 3))
Run Code Online (Sandbox Code Playgroud)
我曾尝试过这篇文章,但我无法正确 使用如何在Swift 4中使用字符串切片下标?
我调整了原始代码,localNumber[..<3]但得到了:
无法使用类型为"PartialRangeUpTo"的索引下标"String"类型的值
最近 VS 提示我使用:
var str = "foo";
var str2 = str[^2..];
Run Code Online (Sandbox Code Playgroud)
而不是:
var str = "foo";
var str2 = str.Substring(str.Length - 2);
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是 和 之间有什么区别str[^2..]吗str.Substring(str.Length - 2)?我认为这是一个新的 C# 功能,但我找不到任何有关它的文档。所以,我不知道它是如何调用的以及它带有什么版本的 C#。
这是我试图用谷歌搜索的内容:
^ in string access c#
我没有得到任何相关结果。我应该谷歌其他东西吗?