Java 我想在不使用拆分函数的情况下拆分字符串?
我想在不使用拆分的情况下拆分字符串。有人能解决我的问题吗?我很努力,但是Java 我想在不使用拆分函数的情况下拆分字符串?,java,Java,我想在不使用拆分的情况下拆分字符串。有人能解决我的问题吗?我很努力,但是 我找不到确切的逻辑。因为这似乎是一项作为编码实践而设计的任务,所以我只提供指导。没有你的代码,先生,虽然逻辑和代码并没有太大的区别 您需要遍历字符串的每个字符,并确定该字符是否为分隔符(例如,逗号或分号)。如果不是,则将其添加到计划返回的数组的最后一个元素中。如果是分隔符,则创建一个新的空字符串作为数组的最后一个元素,开始向其中输入字符。逻辑是:从第一个字符开始遍历整个字符串,并在找到空格时将最后一部分复制到新字符串。。没
我找不到确切的逻辑。因为这似乎是一项作为编码实践而设计的任务,所以我只提供指导。没有你的代码,先生,虽然逻辑和代码并没有太大的区别
您需要遍历字符串的每个字符,并确定该字符是否为分隔符(例如,逗号或分号)。如果不是,则将其添加到计划返回的数组的最后一个元素中。如果是分隔符,则创建一个新的空字符串作为数组的最后一个元素,开始向其中输入字符。逻辑是:从第一个字符开始遍历整个字符串,并在找到空格时将最后一部分复制到新字符串。。没有那么难吗?如果不使用split()进行拆分,则无法进行拆分。唯一的其他选择是获取字符串char索引和子字符串。方法是首先定义所需的函数。在这种情况下,可能是:
String[] split(String s, String separator)
返回类型不必是数组。它也可以是一个列表:
List<String> split(String s, String separator)
列表拆分(字符串、字符串分隔符)
代码大致如下:
- 如果字符串以分隔符开头或结尾,会发生什么情况
- 如果多个分隔符相邻出现怎么办
- 拆分空字符串的结果应该是什么?(1个空字段或0个字段)
在这种情况下,您可以启动您可以使用Java标准库来完成 假设分隔符是
:
和
String s = "Harry:Potter"
int a = s.find(delimiter);
然后加上
s.substring(start, a)
到一个新的字符串数组
继续这样做,直到开始
我想应该足够了。我假设这是家庭作业,所以我只给出一些片段作为提示: 查找给定子串的所有引用的索引 下面是一个使用
indexOf
和fromIndex
参数查找较大字符串中所有子字符串的示例:
String text = "012ab567ab0123ab";
// finding all occurrences forward: Method #1
for (int i = text.indexOf("ab"); i != -1; i = text.indexOf("ab", i+1)) {
System.out.println(i);
} // prints "3", "8", "14"
// finding all occurrences forward: Method #2
for (int i = -1; (i = text.indexOf("ab", i+1)) != -1; ) {
System.out.println(i);
} // prints "3", "8", "14"
字符串API链接
-
- 返回指定子字符串第一次出现的字符串内的索引,从指定索引开始。如果不存在此类事件,则返回-1
从字符串中提取给定索引处的子字符串 此代码段从字符串中提取给定索引处的
子字符串
,并将其放入:
String text=“0123456789abcdefghij”;
列表部件=新的ArrayList();
parts.add(text.substring(0,5));
部分。添加(文本。子字符串(3,7));
添加(文本子字符串(9,13));
添加部分(文本子字符串(18,20));
系统输出打印项次(部分);//打印“[012343456,9abc,ij]”
字符串[]partsArray=parts.toArray(新字符串[0]);
一些关键想法:
- 有效Java第二版,第25项:首选列表而非数组
- 如果你不知道有多少部分需要提前准备的话,效果会特别好
-
- 返回作为此字符串的子字符串的新字符串。子字符串从指定的
开始,并延伸到索引beginIndex
处的字符endIndex-1
- 返回作为此字符串的子字符串的新字符串。子字符串从指定的
这是正确的答案
import java.util.StringTokenizer;
public class tt {
public static void main(String a[]){
String s = "012ab567ab0123ab";
String delims = "ab ";
StringTokenizer st = new StringTokenizer(s, delims);
System.out.println("No of Token = " + st.countTokens());
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
}
}
使用字符串标记器在Java中拆分字符串,而不使用
split
:
import java.util.StringTokenizer;
public class tt {
public static void main(String a[]){
String s = "012ab567ab0123ab";
String delims = "ab ";
StringTokenizer st = new StringTokenizer(s, delims);
System.out.println("No of Token = " + st.countTokens());
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
公共类MySplit{
公共静态字符串[]mySplit(字符串文本、字符串删除器){
java.util.List parts=new java.util.ArrayList();
text+=deletometer;
对于(int i=text.indexOf(delemeter),j=0;i!=-1;){
部分。添加(文本。子字符串(j,i));
j=i+delemeter.length();
i=text.indexOf(delemeter,j);
}
返回parts.toArray(新字符串[0]);
}
公共静态void main(字符串[]args){
字符串str=“012ab567ab0123ab”;
字符串delemeter=“ab”;
字符串结果[]=mySplit(str,delemeter);
for(字符串s:结果)
系统输出打印项次;
}
}
不带PIT\u方法的公共类{
公共静态void main(字符串arg[])
{
char[]str;
字符串s=“计算机软件开发者”gautam”;
字符串s1[];
对于(int i=0;i
静态字符串[]拆分(字符串abc、字符拆分){
char[]ch=abc.toCharArray();
字符串temp=“”;
int j=0,长度=0,大小=0;
对于(int i=0;i/**
*我的方法在没有javas拆分的情况下拆分。
*返回两个文本中mySplit后的单词数组;
*使用修剪。
*/
公共类NoJavaSplit{
公共静态void main(字符串[]args){
String text1=“例如一些文本”;
String text2=“第二句话”;
System.out.println(Arrays.toString(mySplit(text1,text2));
}
私有静态字符串[]mySplit(字符串text1,字符串text2){
text1=text1.trim()+“”+text2.trim()+“”;
字符n='';
int massValue=0;
对于(int i=0;iimport java.util.StringTokenizer;
public class tt {
public static void main(String a[]){
String s = "012ab567ab0123ab";
String delims = "ab ";
StringTokenizer st = new StringTokenizer(s, delims);
System.out.println("No of Token = " + st.countTokens());
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
public class MySplit {
public static String[] mySplit(String text,String delemeter){
java.util.List<String> parts = new java.util.ArrayList<String>();
text+=delemeter;
for (int i = text.indexOf(delemeter), j=0; i != -1;) {
parts.add(text.substring(j,i));
j=i+delemeter.length();
i = text.indexOf(delemeter,j);
}
return parts.toArray(new String[0]);
}
public static void main(String[] args) {
String str="012ab567ab0123ab";
String delemeter="ab";
String result[]=mySplit(str,delemeter);
for(String s:result)
System.out.println(s);
}
}
public class WithoutSpit_method {
public static void main(String arg[])
{
char[]str;
String s="Computer_software_developer_gautam";
String s1[];
for(int i=0;i<s.length()-1;)
{
int lengh=s.indexOf("_",i);
if(lengh==-1)
{
lengh=s.length();
}
System.out.print(" "+s.substring(i,lengh));
i=lengh+1;
}
}
}
static String[] splitAString(String abc, char splitWith){
char[] ch=abc.toCharArray();
String temp="";
int j=0,length=0,size=0;
for(int i=0;i<abc.length();i++){
if(splitWith==abc.charAt(i)){
size++;
}
}
String[] arr=new String[size+1];
for(int i=0;i<ch.length;i++){
if(length>j){
j++;
temp="";
}
if(splitWith==ch[i]){
length++;
}else{
temp +=Character.toString(ch[i]);
}
arr[j]=temp;
}
return arr;
}
public static void main(String[] args) {
String[] arr=splitAString("abc-efg-ijk", '-');
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
/**
* My method split without javas split.
* Return array with words after mySplit from two texts;
* Uses trim.
*/
public class NoJavaSplit {
public static void main(String[] args) {
String text1 = "Some text for example ";
String text2 = " Second sentences ";
System.out.println(Arrays.toString(mySplit(text1, text2)));
}
private static String [] mySplit(String text1, String text2) {
text1 = text1.trim() + " " + text2.trim() + " ";
char n = ' ';
int massValue = 0;
for (int i = 0; i < text1.length(); i++) {
if (text1.charAt(i) == n) {
massValue++;
}
}
String[] splitArray = new String[massValue];
for (int i = 0; i < splitArray.length; ) {
for (int j = 0; j < text1.length(); j++) {
if (text1.charAt(j) == n) {
splitArray[i] = text1.substring(0, j);
text1 = text1.substring(j + 1, text1.length());
j = 0;
i++;
}
}
return splitArray;
}
return null;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
for(int i = 0; i <str.length();i++) {
if(str.charAt(i)==' ') { // whenever it found space it'll create separate words from string
System.out.println();
continue;
}
System.out.print(str.charAt(i));
}
sc.close();
}`
import java.util.Scanner;
public class spilt {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the String to be Spilted : ");
String st = input.nextLine();
Scanner str = new Scanner(st);
while (str.hasNext())
{
System.out.println(str.next());
}
}
}
public class StringWitoutPre {
public static void main(String[] args) {
String str = "md taufique reja";
int len = str.length();
char ch[] = str.toCharArray();
String tmp = " ";
boolean flag = false;
for (int i = 0; i < str.length(); i++) {
if (ch[i] != ' ') {
tmp = tmp + ch[i];
flag = false;
} else {
flag = true;
}
if (flag || i == len - 1) {
System.out.println(tmp);
tmp = " ";
}
}
}
}