c#怎么取字符串中的第n个字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#怎么取字符串中的第n个字符相关的知识,希望对你有一定的参考价值。

比如说1234567中取出前三个数以及中间三个数:

string str1 = "1234567";

string str2= str1.SubString(0,3); // str2="123";

string str3 = str1.SubString(2,3); //str3 = "345";

SubString(m, n) ; m为需要截取的字符串索引位置, n为 截取长度

扩展资料:

c#参考关键字

catch:定义一个代码块,在特定类型异常抛出时,执行块内代码。

checked:既是操作符又是语句,确保编译器运行时,检查整数类型操作或转换时出现的溢出。

const:标识一个可在编译时计算出来的变量值,即一经指派不可修改的值。

delegate:指定一个声明为一种委托类型,委托把方法封装为可调用实体,能在委托实体中调用。

enum:表示一个已命名常量群集的值类型。

参考资料来源:百度百科-c#

参考技术A 1. string.SubString能实现这个功能,两个参数是开始字符的索引和截取的长度
2. 3. 所有方法都是依附于类型的,类型都会在特定的名空间下的,所以你要先对.Net有哪些名空间有个印象,还有常用的类型,当你想找截取字符串的方法的时候,就会想到它应该在字符串类中,就在MSDN的Index那里打string class,这样就能找到这个类,然后点下面的all members看它具体有哪些方法,就能找到了。有时候想不到具体的类型,就按名空间来找,比如想找怎么访问数据库,就联想到.net中有System.Data这样的名空间,然后index到这个名空间的页面,就可以找到一些相关的东西了本回答被提问者采纳
参考技术B string a="1234";
a[1] 2

检查DataFrame中的第n个值是不是等于字符串中的第n个字符

【中文标题】检查DataFrame中的第n个值是不是等于字符串中的第n个字符【英文标题】:Check if nth value in DataFrame is equal to nth character in a string检查DataFrame中的第n个值是否等于字符串中的第n个字符 【发布时间】:2020-06-15 16:29:06 【问题描述】:

我有一个 df:

df =
     c1  c2   c3   c4  c5
  0  K   6    nan  Y   V
  1  H   nan  g    5   nan
  2  U   B    g    Y   L

还有一个字符串

s = 'HKg5'

我想返回 s[0]=c1 的值,s[1]=c2 的值,..... + 在某些情况下 s[i]=nan 的行。

例如上面df中的第1行与字符串匹配

    row 1=
           c1  c2   c3   c4  c5
        1  H   nan  g    5   nan
                                                match=True,   regardless of s[1,4]=nan
     s   = H   K    g    5

而且字符串长度是动态的,所以我的 df cols 高于 c10

我正在使用 df.apply,但我无法弄清楚。我想写一个函数传给df.apply,同时传递字符串。

感谢您的帮助!

克里斯的回答输出

  df=  
        c1  c2  c3  c4  c5 
     0  K   6  NaN  Y   V
     1  H  NaN  g   5  NaN
     2  U   B   g   Y   L

  s = 'HKg5'
  s1 = pd.Series(list(s), index=[f'cx+1' for x in range(len(s))])
  df.loc[((df == s1) | (df.isna())).all(1)]

输出

  `c1  c2  c3  c4  c5`

【问题讨论】:

【参考方案1】:

从您的字符串创建一个助手Series 并使用布尔逻辑进行过滤:

s1 = pd.Series(list(s), index=[f'cx+1' for x in range(len(s))])

# print(s1)    
# c1    H
# c2    K
# c3    g
# c4    5
# dtype: object

逻辑是 df 等于 (==) 这个值 OR (|) 是 nan (isna) 沿轴 1 使用 all 返回所有值为 True 的行

df.loc[((df == s1) | (df.isna())).all(1)]

[出]

  c1   c2 c3 c4   c5
1  H  NaN  g  5  NaN

所以,作为一个函数,你可以这样做:

def df_match_string(frame, string):
    s1 = pd.Series(list(string), index=[f'cx+1' for x in range(len(string))])
    return ((frame == s1) | (frame.isna())).all(1)

df_match_string(df, s)

[出]

0    False
1     True
2    False
dtype: bool

更新

我无法使用提供的示例重现您的问题。我的猜测是您的 DataFrame 中的某些值可能有前导/尾随空格?

在尝试上述解决方案之前,请尝试以下预处理步骤:

for col in df:
    df[col] = df[col].str.strip()

【讨论】:

你好,我这里有一个警告:-----> FutureWarning: elementwise comparison failed;而是返回标量,但将来将执行元素比较 result = method(y) 。返回不正确 看起来只是一个警告,由numpy 中的错误引起,请查看此答案here。如果返回不正确,您能否提供一个未按预期工作的可重现示例 - 具有预期结果? 请检查我编辑了我的原始帖子并包含了你的输出,它返回一个空的 df @Chris A 我无法复制这个问题,这个例子的代码对我有用。我唯一能想到的可能是你们中的一些列有前导或尾随空格..?例如c1处的1行中的值实际上是"H "(注意H后面的空格)

以上是关于c#怎么取字符串中的第n个字符的主要内容,如果未能解决你的问题,请参考以下文章

java取字符串后面几位数怎么取

SQL取出从某字符开始的N个字符的字符串

c++字符串截取 编写函数如substr(sting s ,int n) 要求取字符串S 的第N个字符 如 substr(k123,3) 结果为2

c++怎么提取字符串的一部分

c语言中如何获得字符串的第n个字符?

CString 取字符串