要么在字符串里加点分隔符用split
要么循环for
要么循环for
解决方案 »
- 很急,谢谢 'a' 附近有语法错误。
- c# winform combox
- |zyciis| C#的类,有没有像SQL数据库中的触发器的功能,谢谢
- 在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
- winform中的Form.Resize事件总是比Form.Control.Resize事件后触发,有什么办法让Form.Resize事件先触发呢?
- 关于frameset页面显示的问题!!
- 想问一下 句柄 与 焦点 有是 什 么 区 别 ?
- C#新手问题
- 初学者,请指点,这么理解c#的委托和事件?
- ToolTip问题
- C#中的智能设备
- 怎么分布一个C# WINDOWSFORM项目,要包括自己的文件夹一起发布,就手请明路
/// string转string[]
/// </summary>
/// <param name="str">待转换字符串</param>
/// <returns>字符串数组</returns>
public static string[] StrToArray(string str)
{
string[] str_array = new string[str.Length];
for (int cnt = 0; cnt < str.Length; cnt++)
{
str_array[cnt] = str[cnt];
}
return str_array;
}
using System.Text.RegularExpressions;class Program
{
static void Main()
{
string str = "abc";
string[] strs = Regex.Split(str, "(?<=.)(?=.)");
foreach (string s in strs)
{
Console.WriteLine("[{0}]", s);
}
}
}
/* 程序输出:
[a]
[b]
[c]
*/
string[] strs = System.Text.RegularExpressions.Regex.Split(str, "(?!^|$)");
/// 按指定字数分割字符串
/// </summary>
/// <param name="str">待分割字符串</param>
/// <param name="number">字数</param>
/// <returns>返回分割后的字符串</returns>
public static string[] SplitByNumberWords(String str, int number)
{
string[] strSplit = null;
int length = str.Length;
if (length > number)
{
//需要分割的字符串数组长度,有余数时总长度要加一
strSplit = new string[(int)length / number + (length % number > 0 ? 1 : 0)]; for (int i = 0; i < strSplit.Length;i++ )
{
if ((i + 1) == strSplit.Length && (length % number) > 0)
{
//最后一截字符串
strSplit[i] = str.Substring(i * number, length % number);
}else
{
strSplit[i] = str.Substring(i * number, number);
}
}
}else
{
//长度小于自定字符数
strSplit = new string[1];
strSplit[0] = str;
}
return strSplit;
}
也就是说“ABCDEFGH”=》A,B,C,D,E,F,G,H 或者AB,CD,EF,GH
用我的方法SplitByNumberWords("string",切割后lengs)
注意: 结果要的是 string[] , 不是char[]
这个只有一行语句:
return Regex.Split(s, string.Format("(?<=^(?:.{{{0}}})+)", n));using System;
using System.Text.RegularExpressions;class Program
{
static void Main()
{
string str = "abcdefghijklmnopqrstuvwxyz";
string[] strs = SplitByNumberWords(str, 5);
foreach (string s in strs)
{
Console.WriteLine("[{0}]", s);
}
}
static string[] SplitByNumberWords(string s, int n)
{
return Regex.Split(s, string.Format("(?<=^(?:.{{{0}}})+)", n));
}}
/* 程序输出:
[abcde]
[fghij]
[klmno]
[pqrst]
[uvwxy]
[z]
*/
谢了谢了,受教了。
俺就没想到过正值,哈哈!
请看清楚题目。注意,LZ要求返回的是 string[],而不是 char[]。
static string[] SplitByNumberWords(string s, int n)
{
return Regex.Split(s, string.Format("(?!$)(?<=^(?:.{{{0}}})+)", n));
}
string s = "abcdefghijklmwwsa2321rw@1124^&*";
int n = s.Length ;
for (int i = 0; i < n; i++)
{
s=s.Insert(2*i+1, ",");
}
s = s.Remove(s.Length - 1);//去掉最后一个","号
string[] res = s.Split(',');
你们都是觉得写得短和难读才算牛吗?这个问题本来就将char[]数组简单地用 new string(char, int) 转化为string[]就OK了,还加精。真是无语
#include <iostream>
using namespace std;
int main()
{
size_t i=0,j=0;
int number=0;
string str1 ="10.7.93.25";
string str2 = ".";
string result[4];
for(;((j=str1.find(str2,i))!=string::npos);i=j)
{
result[number]=str1.substr(i,j-i);
j=j+str2.size();
++number;
}
result[number]=str1.substr(i);
cout<<result[0]<<endl;
cout<<result[1]<<endl;
cout<<result[2]<<endl;
cout<<result[3]<<endl;
return 0;
}http://www.Lookxin.cn IT资讯网
String.ToCharArray
这个方式很好,而且简单明了,比较实用,但是返回值是char数组,如果使用的处理函数是string数组,需要处理或转换一下,但也不失为一种好方法方式二:
就是自己写代码的方式,利用循环和其他的一些方式,利用自己写的逻辑进行处理。这种方式,也可以实现,而且能比较灵活的实现,而且能够随心所欲。但是如果分隔的方式不是需要太多变化的话,还是推荐使用类库,这样比较能节省大家的工作量方式三:
使用正则表达是,这个方式很好!而且应该有很高的效率。而且逻辑简单清晰。但是就是,不是所有人都熟悉这正则表达式!但是这个方式确实很好!
String.ToCharArray
split也行
split也行
呵呵,试试
String str="abc";
String s[]=new String[str.length()];
for(int i=0;i<str.length();i++){
s[i]=""+str.charAt(i);
System.out.println(s[i]);
}虽然方法不算好,还比较简便