我正在完成这项任务,我想知道如何一次以10个字符为一组显示序列。
以下是工作程序截图:
我想在输出框中分组10个字符,例如:
1 CTCTAACGCG CAAGCGCATA TCCTTCTAGG 61 ....
每行约60个字符,不包括空格和数字,因此必须有6个10个字符的组。
以下是我显示此输出的代码:
public void dispLines() {
// Get the selected value of characters per line and assign it to noc variable
String noc = numOfChar.getSelectedItem().toString();
// Call StringBuffer object and assign sb variable to it
StringBuffer sb = new StringBuffer();
// Assign raw dna data to dna variable, where string will be mutated
String dna = rawDNAInput.getText();
// Create newdna variable to store the newly created data
String newdna = "";
// Loop through the size of raw dna
for (int i = 0 ; i < dna.length (); ++i)
{
// Assign every single character to StringBuffer sb
sb.append(dna.charAt (i));
}
// Assign the StringBuffer sb values to the newdna variable
newdna = sb.toString();
// Recall StringBuffer object, so new data can be assigned
sb = new StringBuffer();
// Assign start varaible of 0
int start = 0;
// Assign end varaible to be start + number of characters per line
int end = start + Integer.parseInt(noc);
// Keep looping till end value is less than the length of the dna
while(end < newdna.length())
{
// Append values into StringBuffer sb varaible by calling makeNumberedStr method
sb.append(makeNumberedStr(newdna.substring(start, end), start + 1));
// Increment start variable by the selected numbers of characters per line
start += Integer.parseInt(noc);
// Increment end variable by the selected numbers of characters per line
end += Integer.parseInt(noc);
}
// Append values into StringBuffer sb varaible by calling makeNumberedStr method
sb.append (makeNumberedStr (newdna.substring (start), start + 1));
String result = sb.toString();
for(int i = 0; i < result.length(); i++) {
}
// Check to make sure uppercase is selected, if it is then make every character uppercase, else make them lowercase
if(upperCase.isSelected()) {
DNAOutput.setText(result.toUpperCase());
} else if(lowerCase.isSelected()) {
DNAOutput.setText(result.toLowerCase());
}
}
/*
* makeNumberedStr
* This method only displays required number of characters per line
* @parameters String x and integer num
* @returns new StringBuffer value
*/
private String makeNumberedStr (String s, int num)
{
// makes and returns a string composed from left to right of:
// a 6 character field containing right justified [num] followed by 2 spaces
// the string s followed by \n
// Call new StringBuffer object and give it a length of raw dna + 8
StringBuffer sb = new StringBuffer (s.length ());
// Create nstr String varaible and give it value of num
String nstr = String.valueOf (num);
// Loop through the nstr length and append blank space
for (int i = 0 ; i < 6 - nstr.length () ; ++i)
sb.append (' ');
// Check if display number is selected, or else do not display number on every line
if(indexNum.isSelected() == true)
sb.append (nstr + " ");
// Append s value to String Buffer
sb.append (s);
// Append new line to StringBuffer
sb.append ('\n');
// Return StringBuffer text
return sb.toString();
}
谢谢,非常感谢!
答案 0 :(得分:1)
运行这个程序,所以你有一个长字符串“s”,之后我只添加代码(自动计算字符的数量,当它计数到达十时,它会自动在空间之间放置,,),这将帮助您在每十个角色后添加空格,即使您不需要计算它们......
public class PracticeOne {
public static void main(String [] args)
{
String s = "aaaaaaaaaaaaaaaaaaaaaaaaa";
System.out.println(s.replaceAll(".{10}", "$0 "));
}
}
结果是
aaaaaaaaa aaaaaaaaa aaaaa
希望这会对你有所帮助
答案 1 :(得分:0)
不使用正则表达式(这就是Akshay GOel的答案是如何产生的)我们可以使用类似下面的方法向StringBuffer添加空格。我认为你在每行的开头使用5或6个字符作为数字。
//Inserts spaces every 10 characters.
//@parm from The index of the buf to begin counting to insert the spaces.
private static void addSpaces(StringBuilder buf, int from) {
for(int i=from+10; i<buf.length(); i+=11) {
buf.insert(i,' ');
// i++;
}
}