Java-耦合字符串并存储在数组中
我试图将用户的输入作为字符串Java-耦合字符串并存储在数组中,java,arrays,string,split,Java,Arrays,String,Split,我试图将用户的输入作为字符串hex,并将其拆分为若干对;然后我想将每对存储在一个数组中hexArray。换句话说,我想每两个字符拆分一次字符串。我想在每两个字符中插入一个-,然后使用String.split()来拆分它,但这是我设计的方法。在这种情况下,将用户输入的hex设置为“1234567”。这就是我到目前为止所做的: //removes last character from hex if length is odd and stores it back in hex he
hex
,并将其拆分为若干对;然后我想将每对存储在一个数组中hexArray
。换句话说,我想每两个字符拆分一次字符串。我想在每两个字符中插入一个-
,然后使用String.split()
来拆分它,但这是我设计的方法。在这种情况下,将用户输入的hex
设置为“1234567”
。这就是我到目前为止所做的:
//removes last character from hex if length is odd and stores it back in hex
hex = hex.length() % 2 == 0 ? hex : hex.substring(0, hex.length() - 1);
String [] hexArray = new String[hex.length()/2];
//initializes and prints the first element of the array as the first two chars
//of hex
System.out.println(hexArray[0] = hex.substring(0, 2));
for (int i = 1; i + 3 < hex.length(); i++)
{
System.out.println(hexArray[i] = hex.substring(i + 1, i + 3));
}
我已经用我能想到的任何方法修改了for循环中的终止语句。如果要正确编译,它将输出
12
34
56
我启动数组的第一个元素只是为了避免出现
I=0
的情况。如何避免这种重叠?另外,是否有办法将hexArray
的每个元素从十六进制形式转换为十进制形式(假设hex
的字符由输入0-9和A-F(不区分大小写))组成,然后将hexArray
的元素连接成一个字符串?TIA。显然,假设字符串长度可以是偶数或奇数,您必须首先处理这种情况。在十六进制的开头添加0不会造成任何伤害,填充问题,像这样解决它
String str = "123";
String hex = "";
while( ( str.length() % 2 ) != 0 )
{
str = "0" + str;
}
一旦你处理好了,你就可以把所有的东西都编译成
String str = "123";
String hex = "";
while( ( str.length() % 2 ) != 0 )
{
str = "0" + str;
}
System.out.println( str );
for( int x = 0; x < str.length(); x++ )
{
hex += str.charAt(x);
if( ( (x + 1) % 2) == 0 )
{
hex += '-';
}
}
if( hex.endsWith("-") )
{
hex = hex.substring( 0 , hex.length() - 1);
}
System.out.println( hex );
String[] hexArray = hex.split("-");
System.out.println( java.util.Arrays.toString(hexArray) );
希望这对您的案例有所帮助???显然,假设字符串长度可以是偶数或奇数,您必须首先处理该案例。在十六进制的开头添加0不会造成任何伤害,填充问题,像这样解决它
String str = "123";
String hex = "";
while( ( str.length() % 2 ) != 0 )
{
str = "0" + str;
}
一旦你处理好了,你就可以把所有的东西都编译成
String str = "123";
String hex = "";
while( ( str.length() % 2 ) != 0 )
{
str = "0" + str;
}
System.out.println( str );
for( int x = 0; x < str.length(); x++ )
{
hex += str.charAt(x);
if( ( (x + 1) % 2) == 0 )
{
hex += '-';
}
}
if( hex.endsWith("-") )
{
hex = hex.substring( 0 , hex.length() - 1);
}
System.out.println( hex );
String[] hexArray = hex.split("-");
System.out.println( java.util.Arrays.toString(hexArray) );
希望这对您的案例有所帮助???只需在下一步更改for循环:
for (int i = 0; i * 2 + 2 <= hex.length(); i++)
{
System.out.println(hexArray[i] = hex.substring(i * 2, i * 2 + 2));
}
for(inti=0;i*2+2
for (int i = 0; i * 2 + 2 <= hex.length(); i++)
{
System.out.println(hexArray[i] = hex.substring(i * 2, i * 2 + 2));
}
for(int i=0;i*2+2您可以使用正则表达式每两个字符拆分一次
String str = "1234567";
// if the string length is not even we remove the last char.
str = (str.length()%2==0)?str: str.substring(0, str.length()-1);
// this regex matches every two chars, so it will split every two chars
String[] split = str.split("(?<=\\G..)");
for(String s: split){
System.out.println(s); // prints 12 34 56
}
String str=“1234567”;
//如果字符串长度不是偶数,则删除最后一个字符。
str=(str.length()%2==0)?str:str.substring(0,str.length()-1);
//这个正则表达式每两个字符匹配一次,所以它将每两个字符分割一次
String[]split=str.split((?您可以使用正则表达式每两个字符拆分一次
String str = "1234567";
// if the string length is not even we remove the last char.
str = (str.length()%2==0)?str: str.substring(0, str.length()-1);
// this regex matches every two chars, so it will split every two chars
String[] split = str.split("(?<=\\G..)");
for(String s: split){
System.out.println(s); // prints 12 34 56
}
String str=“1234567”;
//如果字符串长度不是偶数,则删除最后一个字符。
str=(str.length()%2==0)?str:str.substring(0,str.length()-1);
//这个正则表达式每两个字符匹配一次,所以它将每两个字符分割一次
String[]split=str.split(“(?你能准确地指定你的输入和预期输出吗?如果我输入1234567
,预期输出将是12 34 56,全部存储在一个数组中,这背后的原因是什么?因为十六进制的输入是12 D687,或者只是每两个字符间隔一次?这是针对我正在处理的程序,但我只是uck在每2个字符拆分一个hex
并将每个拆分的部分存储到一个数组hexArray
时,您能否准确地指定您的输入与预期的输出?如果我输入1234567
,预期的输出将是12 34 56,全部存储在一个数组中,其背后的原因是什么这是因为十六进制的输入是12D687,还是只是每两个字符间隔一次?这是我正在开发的一个程序,但我只是停留在每两个字符拆分一个hex
,并将每个拆分的部分存储到一个数组hexArray
你真的用正则表达式现象解决了它:),但是*******7的情况呢?哦,是的,我刚刚忘了,他想把它删除:D.回答得很好,尽管你用正则表达式现象把它解决了:),但是*******7案例呢?哦,是的,我刚刚忘了,他想把它删除:D。回答得很好,尽管非常感谢。这正是我想要的。我似乎无法理解I
中涉及的算术-我尝试了很多组合,非常感谢。这正是我想要的。我似乎无法理解找出i
中涉及的算法-我尝试了很多组合